tencent cloud

フィードバック

バケットポリシー

最終更新日:2024-06-26 11:09:29
    バケットポリシーは設定したバケットおよびバケット内のオブジェクトに対して機能します。バケットポリシーによって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」に対応します。
    ユーザー:すべてのユーザー(*)、ルートアカウント、サブアカウント、クラウドサービスを含む被付与者を追加、削除できます。
    リソース:バケット全体または指定ディレクトリのリソースを追加できます。
    アクション:権限付与が必要な操作を追加、削除します。
    条件:ユーザーのアクセスIPの制限など、権限付与の際の指定条件です。

    ポリシー文法

    グラフィカル設定を使用する場合を除き、バケットポリシーに精通しているユーザーは、ターゲットバケットの権限管理 > Policy権限設定 > ポリシー設定で、直接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
    豊富なSDK demoをご用意し、各種開発言語をサポートします。
    

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

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

    事例1

    サブネットの10.1.1.0/24ネットワークセグメントからのリクエストおよびvpcidがaqp5jrc1のリクエストを制限します。構文の例は次のとおりです。
    {
    "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

    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"
    }
    
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)