Set Container ACLSet Container ACL

L'opération Set Container ACL définit les autorisations pour le conteneur spécifié.The Set Container ACL operation sets the permissions for the specified container. Les autorisations indiquent si les objets blob dans un conteneur sont accessibles publiquement.The permissions indicate whether blobs in a container may be accessed publicly.

Depuis la version du 19/09/2009, les autorisations de conteneur fournissent les options suivantes pour gérer l'accès au conteneur :Beginning with the 2009-09-19 version, the container permissions provide the following options for managing container access:

  • Accès total en lecture public : les données de conteneur et d'objet BLOB peuvent être lues via une demande anonyme.Full public read access: Container and blob data can be read via anonymous request. Les clients peuvent énumérer les objets blob à l’intérieur du conteneur via une demande anonyme, mais ne peuvent pas énumérer les conteneurs dans le compte de stockage.Clients can enumerate blobs within the container via anonymous request, but cannot enumerate containers within the storage account.

  • Accès en lecture public pour les objets BLOB uniquement : les données d'objet BLOB de ce conteneur peuvent être lues via une demande anonyme, mais les données de conteneur sont indisponibles.Public read access for blobs only: Blob data within this container can be read via anonymous request, but container data is not available. Les clients ne peuvent pas énumérer les objets blob à l'intérieur du conteneur via une demande anonyme.Clients cannot enumerate blobs within the container via anonymous request.

  • Aucun accès en lecture public : Les données de conteneur et d'objet BLOB ne peuvent être lues que par le propriétaire du compte.No public read access: Container and blob data can be read by the account owner only.

Set Container ACL définit également une stratégie d'accès stockée utilisable avec des signatures d'accès partagé.Set Container ACL also sets a stored access policy for use with shared access signatures. Pour plus d’informations, consultez définir une stratégie d’accès stockée.For more information, see Define a stored access policy.

L'accès public au conteneur est anonyme, de même que l'accès via une signature d'accès partagé.All public access to the container is anonymous, as is access via a shared access signature.

RequêteRequest

La demande Set Container ACL peut être construite comme indiqué ci-dessous.The Set Container ACL request may be constructed as follows. HTTPS est recommandé.HTTPS is recommended. Remplacez moncompte par le nom de votre compte de stockage :Replace myaccount with the name of your storage account:

MéthodeMethod URI de demandeRequest URI Version HTTPHTTP Version
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1HTTP/1.1

URI du service de stockage émuléEmulated Storage Service URI

Lorsque vous élaborez une demande pour le service de stockage émulé, spécifiez le nom d'hôte de l'émulateur et le port de service BLOB sous la forme 127.0.0.1:10000, suivi du nom de compte de stockage émulé :When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

MéthodeMethod URI de demandeRequest URI Version HTTPHTTP Version
PUT http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl HTTP/1.1HTTP/1.1

Pour plus d’informations, consultez utilisation de l’émulateur de stockage Azure pour le développement et le test.For more information, see Using the Azure Storage Emulator for Development and Testing.

Paramètres URIURI Parameters

Les paramètres supplémentaires suivants peuvent être spécifiés dans l'URI de la demande.The following additional parameters may be specified on the request URI.

ParamètreParameter DescriptionDescription
timeout facultatif.Optional. Le paramètre timeout est exprimé en secondes.The timeout parameter is expressed in seconds. Pour plus d’informations, consultez définition de délais d’attente pour les opérations de service BLOB.For more information, see Setting Timeouts for Blob Service Operations.

En-têtes de requêteRequest Headers

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.The following table describes required and optional request headers.

En-tête de la demandeRequest Header DescriptionDescription
Authorization Obligatoire.Required. Spécifie le schéma d’autorisation, le nom de compte et la signature.Specifies the authorization scheme, account name, and signature. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure.For more information, see Authorize requests to Azure Storage.
Date ou x-ms-dateDate or x-ms-date Obligatoire.Required. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête.Specifies the Coordinated Universal Time (UTC) for the request. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure.For more information, see Authorize requests to Azure Storage.
x-ms-version facultatif.Optional. Spécifie la version de l'opération à utiliser pour cette demande.Specifies the version of the operation to use for this request. Pour plus d’informations, consultez contrôle de version pour les services de stockage Azure.For more information, see Versioning for the Azure Storage Services.
x-ms-blob-public-access facultatif.Optional. Spécifie si les données dans le conteneur sont accessibles publiquement et le niveau d'accès.Specifies whether data in the container may be accessed publicly and the level of access. Les valeurs possibles incluent :Possible values include:

- container: Spécifie un accès en lecture public complet pour les données de conteneur et d’objet BLOB.- container: Specifies full public read access for container and blob data. Les clients peuvent énumérer les objets blob à l’intérieur du conteneur via une demande anonyme, mais ne peuvent pas énumérer les conteneurs dans le compte de stockage.Clients can enumerate blobs within the container via anonymous request, but cannot enumerate containers within the storage account.
- blob:Spécifie l’accès en lecture public pour les objets BLOB.- blob: Specifies public read access for blobs. Les données d'objets blob à l'intérieur de ce conteneur peuvent être lues via une demande anonyme, mais les données du conteneur ne sont pas disponibles.Blob data within this container can be read via anonymous request, but container data is not available. Les clients ne peuvent pas énumérer les objets blob à l'intérieur du conteneur via une demande anonyme.Clients cannot enumerate blobs within the container via anonymous request.

Si cet en-tête n'est pas inclus dans la demande, les données du conteneur sont privées pour le propriétaire du compte.If this header is not included in the request, container data is private to the account owner.

Notez que la définition d'un accès public pour un conteneur dans un compte de stockage Azure Premium n'est pas autorisée.Note that setting public access for a container in an Azure Premium Storage account is not permitted.
x-ms-lease-id: <ID> Facultatif, version du 12/02/2012 ou ultérieure.Optional, version 2012-02-12 and newer. S'il est indiqué, Set Container ACL ne réussit que si le bail du conteneur est actif et correspond à cet ID.If specified, Set Container ACL only succeeds if the container's lease is active and matches this ID. Si aucun bail n'est actif ou si l'ID ne correspond pas, l'erreur 412 (Échec de la précondition) est retournée.If there is no active lease or the ID does not match, 412 (Precondition Failed) is returned.
x-ms-client-request-id facultatif.Optional. Fournit une valeur opaque générée par le client avec une limite de 1 Kio de caractères qui est enregistrée dans les journaux d’analyse lorsque la journalisation de l’analyse de stockage est activée.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. L’utilisation de cet en-tête est fortement recommandée pour la mise en corrélation des activités côté client avec les requêtes reçues par le serveur.Using this header is highly recommended for correlating client-side activities with requests received by the server. Pour plus d’informations, consultez à propos de la journalisation des Storage Analytics et de la journalisation Azure : utilisation des journaux pour suivre les demandes de stockage.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Cette opération prend également en charge l'utilisation d'en-têtes conditionnels pour exécuter l'opération uniquement si une condition est remplie.This operation also supports the use of conditional headers to execute the operation only if a specified condition is met. Pour plus d’informations, consultez Spécification des en-têtes conditionnels pour les opérations du service Blob.For more information, see Specifying Conditional Headers for Blob Service Operations.

Corps de la demandeRequest Body

Pour spécifier une stratégie d'accès stockée, indiquez un identificateur unique et une stratégie d'accès dans le corps de la demande pour l'opération Set Container ACL.To specify a stored access policy, provide a unique identifier and access policy in the request body for the Set Container ACL operation.

L'élément SignedIdentifier comprend l'identificateur unique, comme indiqué dans l'élément Id, et les détails de la stratégie d'accès, comme indiqué dans l'élément AccessPolicy.The SignedIdentifier element includes the unique identifier, as specified in the Id element, and the details of the access policy, as specified in the AccessPolicy element. La longueur maximale de l'identificateur unique est de 64 caractères.The maximum length of the unique identifier is 64 characters.

Les champs Start et Expiry doivent être exprimés en heures UTC et doivent être dans un format ISO 8061 valide.The Start and Expiry fields must be expressed as UTC times and must adhere to a valid ISO 8061 format. Les formats ISO 8061 pris en charge sont notamment :Supported ISO 8061 formats include the following:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

  • YYYY-MM-DDThh:mm:ss.fffffffTZD

Pour la partie date de ces formats, YYYY est une représentation de l'année à quatre chiffres, MM est une représentation du mois à deux chiffres et DD est une représentation du jour à deux chiffres.For the date portion of these formats, YYYY is a four-digit year representation, MM is a two-digit month representation, and DD is a two-digit day representation. Pour la partie heure, hh est la représentation de l'heure au format 24 heures, mm est la représentation des minutes à deux chiffres, ss est la représentation des secondes à deux chiffres et fffffff est la représentation des millisecondes à sept chiffres.For the time portion, hh is the hour representation in 24-hour notation, mm is the two-digit minute representation, ss is the two-digit second representation, and fffffff is the seven-digit millisecond representation. Un indicateur de temps T sépare les parties date et heure de la chaîne, et un indicateur de fuseau horaire TZD spécifie un fuseau horaire.A time designator T separates the date and time portions of the string, while a time zone designator TZD specifies a time zone.

<?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>  
  

Exemple de demandeSample Request

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>  
  

responseResponse

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.The response includes an HTTP status code and a set of response headers.

Code d’étatStatus Code

Une opération réussie envoie le code d'état 200 (OK).A successful operation returns status code 200 (OK).

Pour plus d’informations sur les codes d’État, consultez codes d’État et d’erreur.For information about status codes, see Status and Error Codes.

En-têtes de réponseResponse Headers

La réponse de l'opération inclut les en-têtes suivants.The response for this operation includes the following headers. La réponse peut aussi inclure des en-têtes HTTP standard supplémentaires.The response may also include additional standard HTTP headers. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

En-tête de réponseResponse header DescriptionDescription
ETag L'ETag du conteneur.The ETag for the container. Si la version de la demande est 18/08/2011 ou plus récente, la valeur de l'ETag sera entre guillemets.If the request version is 2011-08-18 or newer, the ETag value will be in quotes.
Last-Modified Renvoie la date et l'heure de la dernière modification du conteneur.Returns the date and time the container was last modified. Le format de date est conforme à la RFC 1123.The date format follows RFC 1123. Pour plus d’informations, consultez représentation des valeurs de date et d’heure dans les en-têtes.For more information, see Representation of Date-Time Values in Headers.

Toute opération qui modifie le conteneur ou ses propriétés ou métadonnées met à jour l'heure de la dernière modification, notamment la définition des autorisations du conteneur.Any operation that modifies the container or its properties or metadata updates the last modified time, including setting the container's permissions. Les opérations sur les objets blob n'affectent pas l'heure de la dernière modification du conteneur.Operations on blobs do not affect the last modified time of the container.
x-ms-request-id Cet en-tête identifie de façon unique la demande qui a été effectuée et peut être utilisé pour résoudre les problèmes de la demande.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Pour plus d’informations, consultez Dépannage des opérations d’API .For more information, see Troubleshooting API Operations
x-ms-version Indique la version du service BLOB utilisée pour exécuter la demande.Indicates the version of the Blob service used to execute the request. Cet en-tête est renvoyé pour les demandes effectuées avec la version 2009-09-19 ou une version ultérieure.This header is returned for requests made against version 2009-09-19 and later.
Date Une valeur de date/heure UTC générée par le service qui indique le moment auquel la réponse a été initiée.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-client-request-id Cet en-tête peut être utilisé pour dépanner les demandes et les réponses correspondantes.This header can be used to troubleshoot requests and corresponding responses. La valeur de cet en-tête est égale à la valeur de l' x-ms-client-request-id en-tête si elle est présente dans la demande et que la valeur est supérieure à 1024 caractères ASCII visibles.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. Si l' x-ms-client-request-id en-tête n’est pas présent dans la demande, cet en-tête ne sera pas présent dans la réponse.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Exemple de réponseSample Response

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  

AutorisationAuthorization

Seul le propriétaire du compte peut appeler cette opération.Only the account owner may call this operation.

RemarquesRemarks

Seul le propriétaire du compte peut accéder aux ressources dans un conteneur spécifique, sauf si le propriétaire a spécifié que les ressources conteneur sont disponibles pour un accès public en définissant des autorisations sur le conteneur, ou s'il a émis une signature d'accès partagé pour une ressource au sein du conteneur.Only the account owner may access resources in a particular container, unless the owner has specified that container resources are available for public access by setting the permissions on the container, or has issued a shared access signature for a resource within the container.

Lorsque vous définissez des autorisations pour un conteneur, les autorisations existantes sont remplacées.When you set permissions for a container, the existing permissions are replaced. Pour mettre à jour les autorisations du conteneur, appelez obtenir un ACL de conteneur pour extraire toutes les stratégies d’accès associées au conteneur, modifier la stratégie d’accès que vous souhaitez modifier, puis appeler Set Container ACL avec l’ensemble complet de données pour effectuer la mise à jour.To update the container's permissions, call Get Container ACL to fetch all access policies associated with the container, modify the access policy that you wish to change, and then call Set Container ACL with the complete set of data to perform the update.

Activation de l'accès public anonyme sur les données du conteneurEnabling Anonymous Public Access on Container Data

Pour activer l'accès en lecture public anonyme sur les données de conteneur, appelez Set Container ACL avec l'en-tête x-ms-blob-public-access défini à la valeur container ou blob.To enable anonymous public read access on container data, call Set Container ACL with the x-ms-blob-public-access header set to container or blob. Pour désactiver l'accès anonyme, appelez Set Container ACL sans spécifier l'en-tête x-ms-blob-public-access.To disable anonymous access, call Set Container ACL without specifying the x-ms-blob-public-access header.

Si vous définissez x-ms-blob-public-access à la valeur blob, les clients peuvent appeler les opérations suivantes de façon anonyme :If you set x-ms-blob-public-access to blob, clients can call the following operations anonymously:

Si vous définissez x-ms-blob-public-access à la valeur container, les clients peuvent appeler les opérations suivantes de façon anonyme :If you set x-ms-blob-public-access to container, clients can call the following operations anonymously:

Définition de stratégies d'accès au niveau du conteneurEstablishing Container-Level Access Policies

Une stratégie d'accès stockée peut spécifier l'heure de début, l'heure d'expiration et les autorisations pour les signatures d'accès partagé auxquelles elle est associée.A stored access policy can specify the start time, expiry time, and permissions for the shared access signatures with which it's associated. En fonction de la façon dont vous souhaitez contrôler l'accès à votre ressource de conteneur ou d'objet blob, spécifiez tous ces paramètres dans la stratégie d'accès et omettez-les dans l'URL de la signature d'accès partagé.Depending on how you want to control access to your container or blob resource, you can specify all of these parameters within the stored access policy, and omit them from the URL for the shared access signature. De cette façon, vous pouvez modifier le comportement de la signature associée à tout moment, de même que la révoquer.Doing so permits you to modify the associated signature's behavior at any time, as well as to revoke it. Vous pouvez aussi spécifier un ou plusieurs paramètres de stratégie d'accès dans la stratégie d'accès stockée et les autres dans l'URL.Or you can specify one or more of the access policy parameters within the stored access policy, and the others on the URL. Enfin, vous pouvez spécifier tous les paramètres dans l'URL.Finally, you can specify all of the parameters on the URL. Dans ce cas, vous pouvez utiliser la stratégie d'accès stockée pour révoquer la signature et non pour modifier son comportement.In this case, you can use the stored access policy to revoke the signature, but not to modify its behavior. Pour plus d’informations, consultez définir une stratégie d’accès stockée.For more information, see Define a stored access policy.

La signature d’accès partagé et la stratégie d’accès stockée doivent inclure tous les champs requis pour autoriser la signature.Together the shared access signature and the stored access policy must include all fields required to authorize the signature. Si les champs obligatoires sont manquants, la demande échoue.If any required fields are missing, the request will fail. De même, si un champ est spécifié dans l'URL de la signature d'accès partagé et dans la stratégie d'accès stockée, la demande échoue avec le code d'état 400 (Requête incorrecte).Likewise, if a field is specified both in the shared access signature URL and in the stored access policy, the request will fail with status code 400 (Bad Request).

Un maximum de cinq stratégies d'accès distinctes peuvent être définies pour un conteneur donné à tout moment.At most five separate access policies can be set for a given container at any time. Si plus de cinq stratégies d'accès sont passées dans le corps de la demande, le service renvoie le code d'état 400 (Demande incorrecte).If more than five access policies are passed in the request body, then the service returns status code 400 (Bad Request).

Une signature d'accès partagé peut être émise dans un conteneur ou un objet blob indépendamment du fait que des données de conteneur soient disponibles pour un accès en lecture anonyme.A shared access signature can be issued on a container or a blob regardless of whether container data is available for anonymous read access. Une signature d'accès partagé fournit davantage de contrôle sur la façon dont une ressource est rendue accessible, sur qui peut y avoir accès et quand.A shared access signature provides a greater measure of control over how, when, and to whom a resource is made accessible.

Notes

Lorsque vous établissez une stratégie d'accès stockée sur un conteneur, son application peut prendre trente secondes.When you establish a stored access policy on a container, it may take up to 30 seconds to take effect. Au cours de cet intervalle, une signature d'accès partagé associée à la stratégie d'accès stockée échoue avec le code d'état 403 (Interdit), jusqu'à ce que la stratégie d'accès devienne active.During this interval, a shared access signature that is associated with the stored access policy will fail with status code 403 (Forbidden), until the access policy becomes active.

Voir aussiSee Also

Restreindre l’accès aux conteneurs et aux objets BLOB Restrict Access to Containers and Blobs
Déléguer l’accès avec une signature d’accès partagé Delegate access with a shared access signature
Créer et utiliser une signature d’accès partagé Create and Use a Shared Access Signature
Définir une stratégie d’accès stockée Define a stored access policy
Obtient l’ACL du conteneur Get Container ACL
Autoriser les demandes au stockage Azure Authorize requests to Azure Storage
Codes d’État et d’erreur Status and Error Codes
Codes d’erreur du service BLOBBlob Service Error Codes