tencent cloud

Cloud Object Storage

バケットポリシー

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-11-24 16:49:47
バケットポリシーは設定したバケットおよびバケット内のオブジェクトに対して機能します。バケットポリシーによってCAMサブアカウント、その他のルートアカウント、また匿名のユーザーに対しても、バケットおよびバケット内のオブジェクトの操作権限を付与することができます。

概要

注意:
Tencent Cloudのルートアカウントは、そのアカウント下のリソース(バケットを含む)に対する最大の権限を有しています。バケットポリシーではほとんどすべての操作を制限できますが、ルートアカウントは常にPUT Bucket Policy操作の権限を有しており、ルートアカウントがこの操作を呼び出す際、バケットポリシーのチェックは行われません。
バケットポリシー(Bucket Policy)はJSON言語を使用して記述し、匿名IDまたはTencent CloudのあらゆるCAMアカウントに対し、バケット、バケット操作、オブジェクトまたはオブジェクト操作の権限を付与できます。Tencent Cloud COSのバケットポリシーは、そのバケット内のほとんどすべての操作の管理に用いることができます。ACLでは記述できないアクセスポリシーを、バケットポリシーを使用して管理することをお勧めします。

ユースケース

注意:
バケット作成およびバケットリスト取得という2つのサービスレベルの操作権限は、CAMコンソールで設定する必要があります。
そのCOSバケットに誰がアクセス可能かをお知りになりたい場合は、バケットポリシーの使用をお勧めします。バケットを検索し、バケットポリシーをチェックすることで、アクセス可能な人が誰かを知ることができます。次のようなケースで推奨されます。
特定のバケットについて権限を付与する
バケットポリシーがACLに比べてより柔軟である
ユーザーポリシーと異なり、バケットポリシーがクロスアカウント権限付与および匿名ユーザーへの権限付与をサポートしている

バケットポリシーの構成

バケットポリシーはJSON言語を使用して記述します。構文は、プリンシパル(principal)、エフェクト(effect)、アクション(action)、リソース(resource)、条件(condition)などの基本要素を含めたアクセスポリシー言語の統一ルールに従います。詳細については、アクセスポリシーの言語概要をご参照ください。 このうち、バケットポリシーのリソース範囲はそのバケット内に限定されますが、バケット全体、指定されたディレクトリ、指定されたオブジェクトに対する権限を付与することができます。
注意:
バケットポリシーを追加する際は、必ず業務の必要性に応じて、最小権限の原則に従って権限を付与してください。他のユーザーに対し、すべてのリソース(resource:*)またはすべてのアクション(action:*)の権限を直接与えてしまうと、権限が大きすぎるためにデータセキュリティ上のリスクが生じる場合があります。

コンソール設定の例

説明:
COSコンソールを使用してバケットポリシーを設定する場合、ユーザーが持つバケットに関連する権限を付与する必要があります。例えば、バケットタグの取得やバケットリストアップの権限などです。
バケットポリシーのサイズ制限は20KBです。
例:サブアカウントが持つバケットの特定のディレクトリの全権限を付与します。設定情報は次のとおりです。
設定項目
設定値
エフェクト
許可
プリンシパル
サブアカウント、サブアカウントのUIN。このサブアカウントは現在のルートアカウント下のサブアカウントである必要があります。例:100000000011
リソース
特定のディレクトリのプレフィックス。例:folder/sub-folder/*
アクション
すべての操作
条件
なし
コンソールは、グラフィカル設定ポリシー設定という2種類の方式でのバケットポリシーの追加と管理をサポートしています。

グラフィカル設定

ターゲットバケットの権限管理に進み、Policy権限設定 > グラフィック設定を選択し、ポリシーの追加をクリックして、ポップアップウィンドウでポリシーの設定を行います。

ステップ1:テンプレートの選択(オプション)

COSは複数のポリシーテンプレートをご提供しており、様々な被付与者、リソース範囲の組み合わせを選択することで、お客様がバケットポリシーの設定を迅速に行えるようサポートします。テンプレートがニーズに合わない場合はこのステップをスキップするか、またはステップ2:ポリシーの設定で権限付与操作を追加または削除することができます。

ステップ2:ポリシーの設定

ステップ1で選択した被付与者、指定ディレクトリおよびテンプレートの組み合わせに対し、COSはポリシー設定において対応する操作、被付与者、リソースなどを自動的に追加します。お客様が指定ユーザー、指定ディレクトリを選択された場合は、ポリシー設定の際に具体的なユーザーUINとディレクトリを指定する必要があります。
説明:
ディレクトリに対する権限付与の場合、入力するリソースパスの後に/*を付ける必要があることにご注意ください。例えば、ディレクトリのtest権限の場合、test/*と入力する必要があります。
COSがご提供する推奨テンプレートがニーズに合わない場合は、お客様ご自身でポリシーの内容を調整し、被付与者、リソースおよびアクションを追加または削除することもできます。下図に示します。
設定項目の説明は次のとおりです。
エフェクト許可または拒否を選択できます。ポリシー構文の「allow」と「deny」に対応します。
ユーザー:すべてのユーザー(*)、ルートアカウント、サブアカウント、クラウドサービスを含む被付与者を追加、削除できます。
注意:
条件内のIPVPC IDは、同一のポリシー内に同時に設定することはできません。ポリシーを分けて追加してください。
エフェクト拒否の場合、すべてのユーザーの適用範囲は匿名ユーザーのみに限定されます。匿名ユーザーはバケットへアクセスできなくなりますので、操作は、慎重に行ってください
リソース:バケット全体または指定ディレクトリのリソースを追加できます。
アクション:権限付与が必要な操作を追加、削除します。
条件:ユーザーのアクセスIPの制限など、権限付与の際の指定条件です。その他の条件に関する詳細については、条件キーの説明と使用例をご参照ください。
注意:
条件内のIPVPC IDは、同一のポリシー内に同時に設定することはできません。ポリシーを分けて追加してください。
ご利用のCVMとCOSバケットが異なるリージョンにある場合、またはCVM以外からアクセスする場合、条件としてIPを選択し、パブリックIPアドレスを入力してください。ご利用のCVMとCOSバケットが同一リージョンにある場合は、条件としてVPC IDを選択し、VPC IDを入力してください。

ポリシー文法

グラフィカル設定を使用する場合を除き、直接JSON言語を使用してポリシーを作成することができます。
バケットポリシーを作成したら、保存をクリックします。下図の通りです。また、API または SDK を通じてバケットポリシーを追加することもできます。

JSONポリシーの例

次のポリシーの記述例は、ルートアカウントID 100000000001(APPIDは1250000000)下のサブアカウントID 100000000011に対し、北京リージョンのバケットのexamplebucket-bj下のディレクトリfolder/sub-folder内のオブジェクトについて、すべての操作の権限を許可するものです。
{
"statement": [
{
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000011"
]
},
"effect": "allow",
"action": [
"name/cos:*"
],
"resource": [
"qcs::cos:ap-beijing:uid/1250000000:examplebucket-bj-1250000000/folder/sub-folder/*"
]
}
],
"version": "2.0"
}

操作方法

COSではコンソール、API、SDKなどの複数の方式でバケットポリシーを追加することができます。コンソールはグラフィカル設定と一般的な権限付与テンプレートをサポートしており、ポリシー言語に不慣れな場合でもすぐにポリシーを追加できるようになっています。
操作方法
説明
直感的で使いやすいWebページ
RESTful APIで直接COSをリクエスト
SDK
Android
豊富なSDKデモを提供しており、様々な開発言語に対応しています。
.NET(C#)
Go
Java
Node.js
Python

その他のバケットポリシーの例

注意:
バケットポリシーを追加する際は、必ず業務の必要性に応じて、最小権限の原則に従って権限を付与してください。他のユーザーに対し、すべてのリソース(resource:*)またはすべてのアクション(action:*)の権限を直接与えてしまうと、権限が大きすぎるためにデータセキュリティ上のリスクが生じる場合があります。
次に、サブネット、プリンシパル、VPC IDを制限するバケットポリシーの例についてご説明します。

事例1

匿名ユーザーqcs::cam::anyone:anyone)からの、サブネット10.1.1.0/24およびvpcidがaqp5jrc1のリクエストを拒否する例は以下の通りです。
注意:
この拒否ポリシーは匿名ユーザーのみに対して有効です。CAMユーザー(サブアカウント、メインアカウント)を制限したい場合は、principalフィールドに該当アカウントのArnを明示的に指定する必要があります。
{
"statement": [
{
"action": [
"name/cos:*"
],
"condition": {
"ip_equal": {
"qcs:ip": [
"10.1.1.0/24"
]
},
"string_equal": {
"vpc:requester_vpc": [
"vpc-aqp5jrc1"
]
}
},
"effect": "deny",
"principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"resource": [
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
],
"version": "2.0"
}

事例2

サブアカウント(qcs::cam::uin/100000000001:uin/100000000002)がアクセス元vpcidがaqp5jrc1からアクセスする際に、特定のバケットへのアクセスを許可するポリシーの記述例は以下の通りです:
{
"statement": [
{
"action": [
"name/cos:*"
],
"condition": {
"string_equal": {
"vpc:requester_vpc": [
"vpc-aqp5jrc1"
]
}
},
"effect": "allow",
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000002"
]
},
"resource": [
"qcs::cos:ap-beijing:uid/1250000000:examplebucket-1250000000/*"
]
}
],
"version": "2.0"
}


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック