アクセス制御リスト(ACL)はXML言語を使用して記述する、リソースにバインドされた、被付与者と付与される権限を指定したリストです。各バケットとオブジェクトにはそれぞれに、これらとバインドされたACLがあり、匿名ユーザーまたはその他のTencent Cloudのルートアカウントに対し、基本的な読み取り/書き込み権限を付与することができます。
注意:リソースにバインドされたACLを使用した管理にはいくつかの制限があります。
- リソースの所有者は常にリソースに対してFULL_CONTROL権限を有し、その取り消しまたは変更はできません。
- 匿名ユーザーはリソースの所有者にはなれません。この場合、オブジェクトリソースの所有者はバケットの作成者(Tencent Cloudルートアカウント)となります。
- 権限はCloud Access Management(CAM)のルートアカウントまたは事前定義済みのユーザーグループにのみ付与することができます。カスタマイズしたユーザーグループに権限を付与することはできず、サブユーザーへの権限付与も推奨されません。
- 権限の付加条件はサポートしていません。
- 明示的な拒否の権限はサポートしていません。
- 1つのリソースにつき最大100のACLポリシーを持つことができます。
注意:匿名ユーザーにアクセスを開放すること(パブリック読み取り)はハイリスクな操作であり、トラフィックが不正使用される危険性があります。やむを得ずパブリック読み取りを使用する場合は、リンク不正アクセス防止の設定によってセキュリティ保護を実行できます。
バケットとオブジェクトに簡単なアクセス権限のみを設定したい場合、または匿名ユーザーにアクセスを開放したい場合はACLを選択できます。ただし、より多くの状況下では、バケットポリシーまたはユーザーポリシーの方が柔軟性が高いため、これらを優先的に使用することをお勧めします。ACLの適用ケースには次のものがあります。
サポートする被付与者のIDは、何らかのCAMルートアカウントまたは何らかの事前定義済みのCAMユーザーグループです。
注意:
- 他のTencent Cloudルートアカウントにアクセス権限を付与する際、この権限を付与されたルートアカウントはそのアカウント下のサブユーザー、ユーザーグループまたはロールにアクセス権限を与えることができます。
- Cloud Object Storage(COS)は、匿名のユーザーまたはCAMユーザーグループにWRITE、WRITE_ACPまたはFULL_CONTROL権限を与えることを強く非推奨とします。一度権限を許可すると、ユーザーグループはお客様のリソースのアップロード、ダウンロード、削除などを行うことができるようになり、このことはお客様のデータの消失、料金引き落としなどのリスクをもたらす場合があります。
バケットまたはオブジェクトのACLにおいてサポートされるIDには次のものがあります。
http://cam.qcloud.com/groups/global/AllUsers
このグループは、リクエストが署名済みかどうかにかかわらず、誰でも権限なしにリソースにアクセスできることを表します。http://cam.qcloud.com/groups/global/AuthenticatedUsers
このグループは、Tencent Cloud CAMアカウント認証を経たすべてのユーザーがリソースにアクセスできることを表します。Tencent Cloud COSがリソースのACLにおいてサポートする操作は、実際には一連の操作の集合であり、バケットおよびオブジェクトACLにはそれぞれ異なる意味があります。
バケットの操作
次の表に、バケットACLで設定可能な操作のリストを列記しています。
操作セット | 説明 | 許可される行為 |
---|---|---|
READ | オブジェクトのリストアップ | HeadBucket,GetBucketObjectVersions,ListMultipartUploads |
WRITE | オブジェクトのアップロード、上書き、削除 | PutObject,PutObjectCopy,PostObject,InitiateMultipartUpload, UploadPart,UploadPartCopy,CompleteMultipartUpload, DeleteObject |
READ_ACP | バケットのACLの読み取り | GetBucketAcl |
WRITE_ACP | バケットのACLの書き込み | PutBucketAcl |
FULL_CONTROL | 上記4種類の権限のセット | 上記のすべての行為のセット |
注意:バケットのWRITE、WRITE_ACPまたはFULL_CONTROL権限の付与は慎重に行ってください。バケットのWRITE権限の付与は、被付与者に既存のあらゆるオブジェクトの上書きまたは削除を許可するものです。
オブジェクトの操作
次の表に、オブジェクトACLで設定可能な操作のリストを列記しています。
操作セット | 説明 | 許可される行為 |
---|---|---|
READ | オブジェクトの読み取り | GetObject,GetObjectVersion,HeadObject |
READ_ACP | オブジェクトのACLの読み取り | GetObjectAcl,GetObjectVersionAcl |
WRITE_ACP | オブジェクトのACLの書き込み | PutObjectAcl,PutObjectVersionAcl |
FULL_CONTROL | 上記3種類の権限のセット | 上記のすべての行為のセット |
説明:オブジェクトについてはWRITE操作セットの権限はサポートしていません。
COSでは一連の既定ACLによる権限承認がサポートされており、権限を簡単に記述できるようになっています。既定ACLを使用して記述する場合、PUT Bucket/ObjectまたはPUT Bucket/Object aclにx-cos-aclヘッダーを含め、必要な権限を記述する必要があります。同時にリクエスト本文にもXMLの記述内容が含まれる場合は、ヘッダー内の記述が優先的に選択され、リクエスト本文のXMLの記述は無視されます。
バケットの既定ACL
規定名 | 説明 |
---|---|
private | 作成者(ルートアカウント)はFULL_CONTROL権限を有し、その他の人は権限を持ちません(デフォルト) |
public-read | 作成者はFULL_CONTROL権限を有し、匿名ユーザーグループはREAD権限を有します |
public-read-write | 作成者と匿名ユーザーグループの両方がFULL_CONTROL権限を有します。通常はこの権限の付与は非推奨です |
authenticated-read | 作成者はFULL_CONTROL権限を有し、認証ユーザーグループはREAD権限を有します |
オブジェクトの既定ACL
規定名 | 説明 |
---|---|
default | 空の記述であり、この場合は各レベルのディレクトリに基づく明示的な設定およびバケットの設定によって、リクエストを許可するかどうかを決定します(デフォルト) |
private | 作成者(ルートアカウント)はFULL_CONTROL権限を有し、その他の人は権限を持ちません |
public-read | 作成者はFULL_CONTROL権限を有し、匿名ユーザーグループはREAD権限を有します |
authenticated-read | 作成者はFULL_CONTROL権限を有し、認証ユーザーグループはREAD権限を有します |
bucket-owner-read | 作成者はFULL_CONTROL権限を有し、バケット所有者はREAD権限を有します |
bucket-owner-full-control | 作成者とバケット所有者の両方がFULL_CONTROL権限を有します |
説明:オブジェクトについてはpublic-read-write権限はサポートしていません。
バケットを作成する際、COSはデフォルトのACLを作成し、リソース所有者に対しリソースの完全制御権限(FULL_CONTROL)を与えます。その例を次に示します。
<AccessControlPolicy>
<Owner>
<ID>Owner-Cononical-CAM-User-Id</ID>
</Owner>
<AccessControlList>
<Grant>
<Grantee>
<ID>Owner-Cononical-CAM-User-Id</ID>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
オブジェクトを作成する際、COSはデフォルトではACLを作成しません。この場合はオブジェクトの所有者がバケット所有者となります。オブジェクトはバケットの権限を継承し、それはバケットのアクセス権限と一致します。オブジェクトにはデフォルトのACLがないため、Bucket Policyの中のアクセス者およびその行為に対する定義に従って、リクエストが許可されるかどうかを判断します。詳細については、アクセスポリシーの言語概要のドキュメントをご参照ください。
オブジェクトについてその他のアクセス権限を付与したい場合は、これを基本としてさらにACLを追加し、オブジェクトのアクセス権限を記述することができます。例えば匿名ユーザーに対し、単一オブジェクトの読み取り専用の権限を付与する場合の例は次のとおりです。
<AccessControlPolicy>
<Owner>
<ID>Owner-Cononical-CAM-User-Id</ID>
</Owner>
<AccessControlList>
<Grant>
<Grantee>
<ID>Owner-Cononical-CAM-User-Id</ID>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
<Grant>
<Grantee>
<URI>http://cam.qcloud.com/groups/global/AllUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
この記事はお役に立ちましたか?