エクスポート (0) 印刷
すべて展開

Set Container ACL

更新日: 2014年4月

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

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

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

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

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

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

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

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

 

メソッド 要求 URI HTTP バージョン

PUT

https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl

HTTP/1.1

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

 

メソッド 要求 URI HTTP バージョン

PUT

http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl

HTTP/1.1

詳細については、「開発とテストのための Azure のストレージ エミュレーター使用」を参照してください。

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

 

Parameter 説明

timeout

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

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

 

要求ヘッダー 説明

Authorization

必須。認証スキーム、アカウント名、および署名を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

Date またはx-ms-date

必須。要求の世界協定時刻 (UTC) を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

x-ms-version

省略可能。この要求に使用する操作のバージョンを指定します。詳細については、「Azure ストレージ サービスのバージョン設定」を参照してください。

x-ms-blob-public-access

省略可能。コンテナー内のデータがパブリックにアクセス可能かどうかと、アクセスのレベルを指定します。指定できる値は次のとおりです。

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

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

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

x-ms-lease-id: <ID>

バージョン 2012-02-12 以降では省略可能。この要求ヘッダーを指定すると、コンテナーのリースがアクティブであり、この ID に一致する場合にのみ、Set Container ACL が正常に実行されます。アクティブなリースがない場合や ID が一致しない場合は、412 (Precondition Failed) が返されます。

x-ms-client-request-id

省略可能。Storage Analytics Logging が有効な場合に解析ログに記録される、クライアントで生成された非透過の値を 1 KB の文字制限付きで提供します。クライアント側のアクティビティとサーバーが受け取る要求を相互に関連付けるには、このヘッダーを使用することを強くお勧めします。詳細については、「Storage Analytics Logging について」および「Windows Azure のログ: ログを使用した、ストレージ要求の追跡」を参照してください。

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

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

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

Start フィールドと Expiry フィールドは、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 に従います。詳細については、「ヘッダーにおける日付/時刻値の表現」を参照してください。

コンテナーまたはそのプロパティやメタデータを変更する操作 (コンテナーのアクセス許可の設定など) を行うと、最終更新時刻が更新されます。BLOB に対する操作は、コンテナーの最終更新時刻に影響しません。

x-ms-request-id

このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。詳細については、「API 操作のトラブルシューティング」を参照してください。

x-ms-version

要求の実行に使用する BLOB サービスのバージョンを示します。このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。

Date

サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。

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 で指定することもできます。この場合、保存されているアクセス ポリシーを使用して署名を取り消すことができますが、署名の動作を変更することはできません。アクセス ポリシーの設定の詳細については、「保存されているアクセス ポリシーの使用」を参照してください。

共有アクセス署名と保存されているアクセス ポリシーの組み合わせには、署名を認証するために必要なすべてのフィールドが含まれている必要があります。必須フィールドが欠落している場合、要求は失敗します。同様に、共有アクセス署名の URL と保存されているアクセス ポリシーの両方で同じフィールドが指定されている場合、ステータス コード 400 (Bad Request) が返されて要求は失敗します。共有アクセス署名を構成するフィールドの詳細については、「Creating a Shared Access Signature」を参照してください。

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

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

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

表示:
© 2014 Microsoft