次の方法で共有


コンテナー ACL の設定

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

バージョン 2009-09-19 以降、コンテナーのアクセス許可には、コンテナー アクセスを管理するための次のオプションが用意されています。

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

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

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

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

コンテナーへのパブリック アクセスはすべて匿名であり、Shared Access Signature を介したアクセスも同様です。

依頼

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 Storage 開発に Azurite エミュレーターを使用する」を参照してください。

URI パラメーター

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

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

要求ヘッダー

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

要求ヘッダー 形容
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 以降。 指定した場合、Set Container ACL はコンテナーのリースがアクティブで、この ID と一致する場合にのみ成功します。 アクティブなリースがない場合、または ID が一致しない場合は、412 (前提条件に失敗しました) が返されます。
x-ms-client-request-id 随意。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を持つクライアント生成の不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティと、サーバーが受信する要求を関連付けすることを強くお勧めします。 詳細については、「Monitor Azure Blob Storage」を参照してください。

この操作では、指定した条件が満たされた場合にのみ、条件付きヘッダーを使用して操作を実行することもできます。 詳細については、「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 日付/時刻値。応答が開始された時刻を示します。
x-ms-client-request-id 要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、1,024 文字以下の ASCII 文字が含まれている場合、x-ms-client-request-id ヘッダーの値と同じです。 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  

認可

Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 次の説明に従って、Set Container ACL 操作を承認できます。

大事な

Microsoft では、マネージド ID で Microsoft Entra ID を使用して、Azure Storage への要求を承認することをお勧めします。 Microsoft Entra ID は、共有キーの承認と比較して優れたセキュリティと使いやすさを提供します。

Azure Storage では、Microsoft Entra ID を使用して BLOB データへの要求を承認できます。 Microsoft Entra ID を使用すると、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパルにアクセス許可を付与できます。 セキュリティ プリンシパルには、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure マネージド ID を指定できます。 セキュリティ プリンシパルは、OAuth 2.0 トークンを返すために Microsoft Entra ID によって認証されます。 その後、トークンを使用して、BLOB サービスに対する要求を承認できます。

Microsoft Entra ID を使用した承認の詳細については、「Microsoft Entra IDを使用して BLOB へのアクセスを承認する」を参照してください。

権限

Microsoft Entra ユーザー、グループ、マネージド ID、またはサービス プリンシパルが Set Container ACL 操作を呼び出すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。

  • Azure RBAC アクション: Microsoft.Storage/storageAccounts/blobServices/containers/setAcl/action をする
  • 最小特権組み込みロール: ストレージ BLOB データ所有者

Azure RBAC を使用したロールの割り当ての詳細については、「BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。

備考

コンテナーのアクセス許可を設定すると、既存のアクセス許可が置き換えられます。 コンテナーのアクセス許可を更新するには、コンテナー 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 (無効な要求) で失敗します。

最大で、1 つのコンテナーに対して 5 つの個別のアクセス ポリシーをいつでも設定できます。 要求本文で 5 つ以上のアクセス ポリシーが渡された場合、サービスは状態コード 400 (無効な要求) を返します。

コンテナー データが匿名読み取りアクセスに使用できるかどうかに関係なく、コンテナーまたは BLOB に対して共有アクセス署名を発行できます。 Shared Access Signature を使用すると、リソースをアクセス可能にする方法、タイミング、およびユーザーをより詳細に制御できます。

手記

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

請求

価格要求は、Blob Storage API を使用するクライアントから、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリから送信できます。 これらの要求には、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに発生します。 次の表に、ストレージ アカウントの種類に基づく Set Container ACL 要求の課金カテゴリを示します。

操作 ストレージ アカウントの種類 課金カテゴリ
コンテナー ACL の設定 Premium ブロック BLOB
標準汎用 v2
その他の操作
コンテナー ACL の設定 標準汎用 v1 書き込み操作

指定された課金カテゴリの価格については、Azure Blob Storage の価格に関するページを参照してください。

関連項目

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