基本概念
アクセス制御リスト(ACL)はXML言語を使用して記述する、リソースにバインドされた、被付与者と付与される権限を指定したリストです。各バケットとオブジェクトにはそれぞれに、これらとバインドされたACLがあり、匿名ユーザーまたはその他のTencent Cloudのルートアカウントに対し、基本的な読み取り/書き込み権限を付与することができます。
注意:
リソースにバインドされたACLを使用した管理にはいくつかの制限があります。
リソースの所有者は常にリソースに対してFULL_CONTROL権限を有し、その取り消しまたは変更はできません。
匿名ユーザーはリソースの所有者にはなれません。この場合、オブジェクトリソースの所有者はバケットの作成者(Tencent Cloudルートアカウント)となります。
権限はCloud Access Management(CAM)のルートアカウントまたは事前定義済みのユーザーグループにのみ付与することができます。カスタマイズしたユーザーグループに権限を付与することはできず、サブユーザーへの権限付与も推奨されません。
権限の付加条件はサポートしていません。
明示的な拒否の権限はサポートしていません。
1つのリソースにつき最大100のACLポリシーを持つことができます。
ユースケース
注意:
匿名ユーザーにアクセスを開放すること(パブリック読み取り)はハイリスクな操作であり、トラフィックが不正使用される危険性があります。やむを得ずパブリック読み取りを使用する場合は、リンク不正アクセス防止の設定によってセキュリティ保護を実行できます。 バケットとオブジェクトに簡単なアクセス権限のみを設定したい場合、または匿名ユーザーにアクセスを開放したい場合はACLを選択できます。ただし、より多くの状況下では、バケットポリシーまたはユーザーポリシーの方が柔軟性が高いため、これらを優先的に使用することをお勧めします。ACLの適用ケースには次のものがあります。
簡単なアクセス権限のみを設定する場合。
コンソールでアクセス権限をすばやく設定する場合。
あるオブジェクト、ディレクトリまたはバケットへのアクセスをすべての匿名インターネットユーザーに開放したい場合は、ACLによる操作の方が便利です。
ACLの要素
被付与者 Grantee
サポートする被付与者のIDは、何らかのCAMルートアカウントまたは何らかの事前定義済みのCAMユーザーグループです。
注意:
他のTencent Cloudルートアカウントにアクセス権限を付与する際、この権限を付与されたルートアカウントはそのアカウント下のサブユーザー、ユーザーグループまたはロールにアクセス権限を与えることができます。
Cloud Object Storage(COS)は、匿名のユーザーまたはCAMユーザーグループにWRITE、WRITE_ACPまたはFULL_CONTROL権限を与えることを強く非推奨とします。一度権限を許可すると、ユーザーグループはお客様のリソースのアップロード、ダウンロード、削除などを行うことができるようになり、このことはお客様のデータの消失、料金引き落としなどのリスクをもたらす場合があります。
バケットまたはオブジェクトのACLにおいてサポートされるIDには次のものがあります。
クロスアカウント:ルートアカウントのIDを使用してください。アカウントIDはアカウントセンターのアカウント情報で取得します(例:100000000001)。 事前定義済みのユーザーグループ:URIタグを使用して事前定義済みのタグ付けをしたユーザーグループを使用してください。次のユーザーグループをサポートしています。
匿名ユーザーグループ -http://cam.qcloud.com/groups/global/AllUsersこのグループは、リクエストが署名済みかどうかにかかわらず、誰でも権限なしにリソースにアクセスできることを表します。
認証ユーザーグループ -http://cam.qcloud.com/groups/global/AuthenticatedUsersこのグループは、Tencent Cloud CAMアカウント認証を経たすべてのユーザーがリソースにアクセスできることを表します。
操作 Permission
Tencent Cloud COSがリソースのACLにおいてサポートする操作は、実際には一連の操作の集合であり、バケットおよびオブジェクトACLにはそれぞれ異なる意味があります。
バケットの操作
次の表に、バケットACLで設定可能な操作のリストを列記しています。
|
| | HeadBucket、GetBucketObjectVersions、ListMultipartUploads |
| | PutObject、PutObjectCopy、PostObject、InitiateMultipartUpload、UploadPart、UploadPartCopy、CompleteMultipartUpload、 DeleteObject |
| | GetBucketACL |
| | PutBucketACL |
| | |
注意:
バケットのWRITE、WRITE_ACPまたはFULL_CONTROL権限の付与は慎重に行ってください。バケットのWRITE権限の付与は、被付与者に既存のあらゆるオブジェクトの上書きまたは削除を許可するものです。
オブジェクトの操作
次の表に、オブジェクトACLで設定可能な操作のリストを列記しています。
|
| | GetObject、GetObjectVersion、HeadObject |
| | GetObjectACL、GetObjectVersionACL |
| | PutObjectACL、PutObjectVersionACL |
| | |
説明:
オブジェクトについてはWRITE操作セットの権限はサポートしていません。
既定ACL
COSでは一連の既定ACLによる権限承認がサポートされており、権限を簡単に記述できるようになっています。既定ACLを使用して記述する場合、PUT Bucket/ObjectまたはPUT Bucket/Object aclにx-cos-aclヘッダーを含め、必要な権限を記述する必要があります。同時にリクエスト本文にもXMLの記述内容が含まれる場合は、ヘッダー内の記述が優先的に選択され、リクエスト本文のXMLの記述は無視されます。
バケットの既定ACL
|
| 作成者(ルートアカウント)はFULL_CONTROL権限を有し、その他の人は権限を持ちません(デフォルト) |
| 作成者はFULL_CONTROL権限を有し、匿名ユーザーグループはREAD権限を有します |
| 作成者と匿名ユーザーグループの両方がFULL_CONTROL権限を有します。通常はこの権限の付与は非推奨です |
| 作成者はFULL_CONTROL権限を有し、認証ユーザーグループはREAD権限を有します |
オブジェクトの既定ACL
|
| 空の記述であり、この場合は各レベルのディレクトリに基づく明示的な設定およびバケットの設定によって、リクエストを許可するかどうかを決定します(デフォルト) |
| 作成者(ルートアカウント)はFULL_CONTROL権限を有し、その他の人は権限を持ちません |
| 作成者はFULL_CONTROL権限を有し、匿名ユーザーグループはREAD権限を有します |
| 作成者はFULL_CONTROL権限を有し、認証ユーザーグループはREAD権限を有します |
| 作成者はFULL_CONTROL権限を有し、バケット所有者はREAD権限を有します |
bucket-owner-full-control | 作成者とバケット所有者の両方がFULL_CONTROL権限を有します |
説明:
オブジェクトについてはpublic-read-write権限はサポートしていません。
事例
バケットのACL
バケットを作成する際、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>
オブジェクトのACL
オブジェクトを作成する際、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>
利用方法
COSコンソールの使用
アクセス権限の設定
COSコンソールから、バケットへのアクセス権限の設定または変更を行うことができます。COSは、以下2種類の権限タイプの設定をサポートしています。
パブリック権限:プライベート読み取り/書き込み、パブリック読み取りプライベート書き込み、およびパブリック読み取り/書き込みです。パブリック権限の説明については、バケット概要の権限のタイプをご参照ください。 ユーザー権限:ルートアカウントは、デフォルトではバケットのすべての権限を所有しています(完全制御)。またCOSは、サブアカウントに対するデータ読み取り、データ書き込み、権限読み取り、権限書き込み、さらには完全制御の最高権限の付与もサポートしています。
説明:
バケットがプライベート読み取り/書き込みの場合、または指定のアカウントに対してユーザー権限を承認している場合は、オブジェクトのリクエストの際に、ID認証用の署名を含める必要があります。署名に関する説明については、リクエスト署名をご参照ください。 バケットがパブリック読み取り/プライベート書き込みまたはパブリック読み取り/書き込みの場合、オブジェクトのリクエストの際に署名を含める必要はなく、匿名のユーザーが直接リンクを通じてオブジェクトにアクセスできます。データ漏洩のリスクがありますので、慎重に設定してください。
単一承認
2. 左側ナビゲーションバーで、バケットリストをクリックします。
3. アクセス権限を設定または変更したいバケットを見つけ、そのバケット名をクリックします。
4. バケット設定ページで、権限管理>バケットのアクセス権限をクリックし、バケットのパブリック権限とユーザー権限(例えばサブアカウントの追加があります。サブアカウントIDはCAM コンソールで確認できます)を設定します。 注意:
デフォルトのアラームが設定されていない場合、パブリックリード/プライベートライトまたはパブリックリード/ライト権限を使用する必要がある場合は、アラームポリシーを有効にすることをお勧めします。すでに設定されている場合は、追加の設定は不要で、通知も表示されません。
5. 保存をクリックすると、バケットアクセス権限の設定が完了します。
一括承認
2. 左側ナビゲーションバーで、バケットリストをクリックします。
3. リストの上にある承認管理をクリックします。
4. ポップアップウィンドウで、承認したいバケットを選択します。次に、バケットのパブリック権限とユーザー権限(例えばサブアカウントの追加、サブアカウントIDはCAM コンソールで確認できます)を設定します。 注意:
権限管理は、公共の権限とユーザーの権限を同時に変更します。ユーザーの権限のみを変更する必要がある場合は、以前のバケットの公共の権限と現在の設定が一致しているか必ず確認してください。そうしないと、以前の権限が上書きされます。
5. 設定の完了後にOKをクリックすると、複数のバケットのアクセス権限の設定が完了します。
オブジェクトのアクセス権限の設定
Cloud Object Storage(COS)は、オブジェクトディメンションに基づいたアクセス権限の設定を提供します。またこの権限は、バケットのアクセス権限よりも優先度が高いです。
説明:
オブジェクトのアクセス権限は、ユーザーがデフォルトのドメイン名でアクセスする場合にのみ有効です。CDNアクセラレーションドメイン名やカスタムドメイン名でアクセスする場合、バケットのアクセス権限が優先されます。
アクセスポリシールールには数の制限があります。詳細については、仕様と制限をご参照ください。 操作手順
2. 左側ナビゲーションバーでバケットリストをクリックし、バケットリストページに進みます。
3. オブジェクトがあるバケットを見つけ、そのバケット名をクリックし、バケット管理ページに進みます。
4. 左側ナビゲーションバーでファイルリストを選択し、ファイルリストページに進みます。
5. アクセス権限を設定したいオブジェクトを見つけ、右側の詳細をクリックし、ファイルの詳細ページに進みます(フォルダの場合は、右側の権限の設定をクリックします)。
6. オブジェクトのアクセス権限バーで、実際の必要性に応じてアクセス権限を設定します。
COSは、オブジェクトに対して、以下2種類の権限タイプの設定をサポートしています。
パブリック権限:権限の継承、プライベート読み取り/書き込みおよびパブリック読み取りプライベート書き込みが含まれます。パブリック権限の説明については、オブジェクト概要の権限のタイプをご参照ください。 ユーザー権限:ルートアカウントはデフォルトではオブジェクトのすべての権限を所有しています(完全制御)。
7. 保存をクリックすると、オブジェクトのアクセス権限を設定できます。
複数のオブジェクトに対して一括でアクセス権限の設定または変更を行う必要がある場合は、複数のオブジェクトにチェックを入れ、上部にあるその他の操作 > アクセス権限の変更をクリックすれば設定できます。