Set Container ACL

Set Container ACL 操作は、指定されたコンテナーのアクセス許可を設定します。 アクセス許可は、コンテナー内の BLOB がパブリックにアクセス可能かどうかを示します。

2009-09-19 バージョン以降では、コンテナー アクセス許可を使用して、コンテナーへのアクセスを次のように管理できます。

  • 完全なパブリック読み取りアクセス: コンテナーと BLOB のデータは、匿名要求を介して読み取ることができます。 クライアントは匿名要求でコンテナー内の BLOB を列挙できますが、ストレージ アカウント内のコンテナーを列挙することはできません。

  • BLOB に限定したパブリック読み取りアクセス: 該当するコンテナー内の BLOB データは匿名要求で読み取ることができますが、コンテナー データは参照できません。 クライアントはコンテナー内の BLOB を匿名要求で列挙することはできません。

  • パブリック読み取りアクセスなし: コンテナーと BLOB のデータはアカウント所有者に限り読み取ることができます。

Set Container ACL は、共有アクセス署名で使用する保存されているアクセス ポリシーも設定します。 詳細については、「保存されているアクセス ポリシーの定義」を参照してください。

コンテナーに対するすべてのパブリック アクセスは、共有アクセス署名を介したアクセス同様匿名です。

Request

Set Container ACL 要求の構成は次のとおりです。 HTTPS が推奨されます。 myaccount をストレージ アカウントの名前に置き換えます。

Method 要求 URI HTTP バージョン
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1

エミュレートされたストレージ サービスの URI

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名と BLOB Service ポートを 127.0.0.1:10000 と指定し、その後にエミューレートされたストレージ アカウント名を指定します。

Method 要求 URI HTTP バージョン
PUT http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl HTTP/1.1

詳細については、「開発とテストにAzure Storage Emulatorを使用する」を参照してください。

URI パラメーター

次の追加パラメーターを要求の URI で指定できます。

パラメーター 説明
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Blob Service 操作のタイムアウトの設定」を参照してください

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、および署名を指定します。 詳細については、「Azure Storage要求を承認する」を参照してください。
Date または x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage要求を承認する」を参照してください。
x-ms-version 省略可能。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
x-ms-blob-public-access 省略可能。 コンテナー内のデータがパブリックにアクセス可能かどうかと、アクセスのレベルを指定します。 次の値を指定できます。

- container: コンテナーと BLOB データの完全なパブリック読み取りアクセスを指定します。 クライアントは匿名要求でコンテナー内の BLOB を列挙できますが、ストレージ アカウント内のコンテナーを列挙することはできません。
- blob: BLOB のパブリック読み取りアクセスを指定します。 該当するコンテナー内の BLOB データは匿名要求で読み取り可能ですが、コンテナー データは参照できません。 クライアントはコンテナー内の BLOB を匿名要求で列挙することはできません。

このヘッダーが要求に含まれない場合、コンテナー データはアカウント所有者に対してプライベートです。

Azure Premium Storage アカウントのコンテナーへのパブリック アクセスの設定は許可されていないことに注意してください。
x-ms-lease-id: <ID> バージョン 2012-02-12 以降では省略可能。 この要求ヘッダーを指定すると、コンテナーのリースがアクティブであり、この ID に一致する場合にのみ、Set Container ACL が正常に実行されます。 アクティブなリースがない場合や ID が一致しない場合は、412 (Precondition Failed) が返されます。
x-ms-client-request-id 省略可能。 ストレージ分析ログが有効になっているときに分析ログに記録される 1 KiB 文字制限を持つ、クライアントによって生成された不透明な値を提供します。 クライアント側のアクティビティをサーバーが受信した要求と関連付けるには、このヘッダーを使用することが強く推奨されます。 詳細については、「Storage AnalyticsログAzure ログ: ログを使用したStorage要求の追跡」を参照してください。

この操作では、条件ヘッダーを使用して、指定した条件を満たした場合にのみ操作を実行することもできます。 詳細については、「BLOB サービス操作の条件ヘッダーの指定」を参照してください。

要求本文

保存されているアクセス ポリシーを指定するには、Set Container ACL 操作の要求本文で一意識別子とアクセス ポリシーを指定します。

SignedIdentifier 要素には、Id 要素で指定された一意識別子と、AccessPolicy 要素で指定されたアクセス ポリシーの詳細が含まれます。 一意識別子の最大長は 64 文字です。

フィールドとExpiryフィールドは Start UTC 時刻で表す必要があり、有効な ISO 8061 形式に準拠している必要があります。 サポートされている ISO 8061 形式は次のとおりです。

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

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

これらの形式の日付部分では、YYYY は 4 桁の年表現、MM は 2 桁の月表現、DD は 2 桁の日付表現です。 時間部分では、hh は 24 時間表記の時間表現、mm は 2 桁の分表現、ss は 2 桁の秒表現、fffffff は 7 桁のミリ秒表現です。 時間指定子 T は文字列の日付部分と時間部分を分離し、タイム ゾーン指定子 TZD はタイム ゾーンを指定します。

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

要求のサンプル

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>  
  

応答

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。

状態コード

操作に成功すると、状態コード 200 (OK) が返されます。

状態コードの詳細については、「 状態とエラー コード」を参照してください。

レスポンス ヘッダー

この操作の応答には、次のヘッダーが含まれています。 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています。

応答ヘッダー 説明
ETag コンテナーの ETag。 要求バージョンが 2011-08-18 またはそれ以降である場合、ETag 値は引用符で囲まれます。
Last-Modified コンテナーが最後に更新された日時を返します。 日付形式は RFC 1123 に従います。 詳細については、「 ヘッダーのDate-Time値の表現」を参照してください。

コンテナーまたはそのプロパティやメタデータを変更する操作 (コンテナーのアクセス許可の設定など) を行うと、最終更新時刻が更新されます。 BLOB に対する操作は、コンテナーの最終更新時刻に影響しません。
x-ms-request-id このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。 詳細については、「API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用する BLOB サービスのバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。
Date サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。
x-ms-client-request-id このヘッダーは、要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値 x-ms-client-request-id が最大 1024 文字の ASCII 文字で表示される場合、ヘッダーの値と同じです。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。

応答のサンプル

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  

承認

この操作を呼び出すことができるのはアカウント所有者のみです。

解説

所有者がコンテナーに対するアクセス許可を設定することでコンテナー リソースがパブリック アクセス可能であることを指定したか、コンテナー内のリソースに対して共有アクセス署名を発行していない限り、アカウント所有者だけが特定のコンテナーのリソースにアクセスできます。

コンテナーのアクセス許可を設定すると、既存のアクセス許可が置換されます。 コンテナーのアクセス許可を更新するには、 Get Container ACL を呼び出してコンテナーに関連付けられているすべてのアクセス ポリシーをフェッチし、変更するアクセス ポリシーを変更してから、完全なデータ セットを呼び出 Set Container ACL して更新を実行します。

コンテナー データに対する匿名パブリック アクセスの有効化

コンテナー データに対する匿名パブリック読み取りアクセスを有効にするには、x-ms-blob-public-access ヘッダーを container または blob に設定して Set Container ACL を呼び出します。 匿名アクセスを無効にするには、x-ms-blob-public-access ヘッダーを指定しないで Set Container ACL を呼び出します。

x-ms-blob-public-accessblob に設定した場合、クライアントは次の操作を匿名で呼び出すことができます。

x-ms-blob-public-accesscontainer に設定した場合、クライアントは次の操作を匿名で呼び出すことができます。

コンテナー レベルのアクセス ポリシーの有効化

保存されているアクセス ポリシーでは、関連付けられている共有アクセス署名の開始時刻、有効期限、およびアクセス許可を指定できます。 コンテナーまたは BLOB リソースへのアクセスを制御する方法に応じて、保存されているアクセス ポリシー内でこれらすべてのパラメーターを指定し、共有アクセス署名の URL からこれらを省略できます。 これにより、関連付けられた署名の動作をいつでも変更または取り消しできます。 また、保存されているアクセス ポリシー内で 1 つ以上のアクセス ポリシー パラメーターを指定し、残りのパラメーターを URL で指定することもできます。 すべてのパラメーターを URL で指定することもできます。 この場合、保存されているアクセス ポリシーを使用して署名を取り消すことができますが、署名の動作を変更することはできません。 詳細については、「保存されているアクセス ポリシーの定義」を参照してください。

Shared Access Signature と格納されているアクセス ポリシーを組み合わせて、署名を承認するために必要なすべてのフィールドを含める必要があります。 必須フィールドが欠落している場合、要求は失敗します。 同様に、共有アクセス署名 URL と格納されているアクセス ポリシーの両方でフィールドが指定されている場合、要求は状態コード 400 (無効な要求) で失敗します。

特定のコンテナーには一度に最大 5 つのアクセス ポリシーを設定できます。 5 つを超えるアクセス ポリシーが要求本文で渡された場合、サービスはステータス コード 400 (Bad Request) を返します。

コンテナー データが匿名読み取りアクセスに対して使用可能かどうかにかかわらず、共有アクセス署名はコンテナーまたは BLOB に対して発行できます。 共有アクセス署名は、リソースがいつ、どのように、だれに対してアクセス可能かを制御する優れた手段の 1 つです。

注意

コンテナーに格納されているアクセス ポリシーを確立すると、有効になるまでに最大 30 秒かかる場合があります。 その間、アクセス ポリシーがアクティブになるまでは、保存されているアクセス ポリシーに関連付けられている共有アクセス署名は、ステータス コード 403 (Forbidden) が返されて失敗します。

参照

コンテナーと BLOB へのアクセスの制限
Shared Access Signature を使用してアクセスを委任する
共有アクセス署名の作成と使用
保存されているアクセス ポリシーを定義する
コンテナー ACL の取得
Azure Storageへの要求を承認する
ステータス コードとエラー コード
BLOB サービスのエラー コード