tencent cloud

フィードバック

バケットポリシー

最終更新日:2022-05-19 15:19:11

    バケットポリシーは設定したバケットおよびバケット内のオブジェクトに対して機能します。バケットポリシーによって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:ポリシーの設定で権限付与操作を追加または削除することができます。

    被付与者

    展开&收起
    • すべてのユーザー(匿名アクセス可):匿名ユーザーに操作権限を開放したい場合は、この項目を選択します。次の手順でポリシーを設定する際に、すべてのユーザーが自動的に追加され、*と表示されます。
    • 指定ユーザー:指定するサブアカウント、ルートアカウントまたはクラウドサービスに操作権限を開放したい場合は、この項目を選択します。次の手順でポリシーを設定する際に、具体的なアカウントUINを指定する必要があります。

    リソース範囲

    展开&收起
    • バケット全体:バケットの設定項目に関連する権限を付与したい場合、またはリソース範囲としてバケット全体を指定したい場合は、この項目を選択します。次の手順でポリシーを設定する際に、バケット全体がリソースとして自動的に追加されます。
    • 指定ディレクトリ:リソース範囲を指定のフォルダに限定したい場合は、この項目を選択します。次の手順でポリシーを設定する際に、具体的なディレクトリを指定する必要があります。

    テンプレート

    展开&收起

    権限を付与したいアクションのグループです。COSはお客様が選択した被付与者およびリソース範囲に基づき、推奨するポリシーテンプレートをご提供します。テンプレートがニーズに合わない場合はこのステップをスキップするか、または次のステップの「ポリシーの設定」で権限付与操作を追加または削除することができます。

    • カスタムポリシー(プリセット設定はご提供していません):テンプレートをご利用にならない場合はこの項目を選択し、次のステップの「ポリシーの設定」で、必要に応じてご自身でポリシーを追加できます。
    • その他のテンプレート:COSはお客様が選択した被付与者およびリソース範囲の組み合わせに基づき、それぞれに推奨するテンプレートをご提供します。必要なテンプレートにチェックを入れると、次のステップのポリシー設定で、COSが自動的に必要な操作を追加します。

    テンプレートの説明は次の表をご参照ください。

    被付与者 リソース範囲 ポリシーテンプレート 説明
    すべての組み合わせ カスタムポリシー 任意の被付与者、リソース範囲の組み合わせの場合、このテンプレートを選択するとプリセットポリシーのご提供は行われません。次のステップのポリシー設定で、ご自身でポリシーを直接追加することができます。
    すべてのユーザー(匿名アクセス可能) バケット全体 読み取り専用オブジェクト(オブジェクトリストのリストアップを含まない) 匿名ユーザーの場合、COSはファイル読み取り(ダウンロードなど)、ファイル書き込み(アップロード、変更など)の推奨テンプレートをご提供します。

    COSの推奨テンプレートには、バケット内の全オブジェクトのリストアップ、読み取り/書き込み権限、バケット設定などのその他の機密性の高い権限は含まれず、他の余分な権限を開放しないようにすることで、データの安全性を高めています。

    必要に応じて、後のステップでご自身で動作権限を追加または削除することができます。
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含まない)
    指定ディレクトリ 読み取り専用オブジェクト(オブジェクトリストのリストアップを含まない)
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含まない)
    指定ユーザー バケット全体 読み取り専用オブジェクト(オブジェクトリストのリストアップを含まない) 指定ユーザーとバケット全体の組み合わせの場合、COSは最も多くの推奨テンプレートをご提供します。ファイル読み取り、書き込みおよびファイルリストアップのほか、次のような機密性の高い権限のテンプレートも含まれ、これらは信頼できるユーザーへの使用に適しています。
  • 読み取り/書き込みバケットおよびオブジェクトACL:バケット取得、変更ACL、オブジェクトACL。GetObjectACL、PutObjectACL、GetBucketACL、PutBucketACLを含む
  • バケット一般設定項目:バケットタグ、クロスドメイン、back-to-originなどの機密性が高くない権限。
  • バケットの機密性の高い設定項目:バケットポリシー、バケットACL、バケット削除などにかかわる機密性の高い権限であり、慎重に使用する必要があります。
  • 読み取り専用オブジェクト(オブジェクトリストのリストアップを含む)
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含まない)
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含む)
    バケットおよびオブジェクトの読み取り/書き込みACL
    バケット一般設定項目
    バケットの機密性の高い設定項目
    指定ディレクトリ 読み取り専用オブジェクト(オブジェクトリストのリストアップを含まない) 指定ユーザーと指定ディレクトリの組み合わせの場合、COSはファイル読み取り(ダウンロードなど)、ファイル書き込み(アップロード、変更など)以外にも、オブジェクトリストのリストアップ権限を含む推奨テンプレートをご提供します。

    指定したユーザー向けに指定したフォルダのファイルの読み取り、書き込み、リストアップ権限を開放したい場合は、この組み合わせを選択することをお勧めします。

    必要に応じて、後のステップでご自身で動作権限を追加または削除することができます。
    読み取り専用オブジェクト(オブジェクトリストのリストアップを含む)
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含まない)
    読み取り/書き込みオブジェクト(オブジェクトリストのリストアップを含む)

    ステップ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ページ
    API RESTful APIで直接COSをリクエスト
    SDK JavaScript 豊富なSDK demoをご用意し、各種開発言語をサポートします。
    Node.js
    小程序

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

    注意:

    バケットポリシーを追加する際は、必ず業務の必要性に応じて、最小権限の原則に従って権限を付与してください。他のユーザーに対し、すべてのリソース(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日対応)