tencent cloud

Cloud Object Storage

最新情報とお知らせ
製品アップデート情報
製品のお知らせ
製品概要
製品概要
機能概要
応用シナリオ
製品の優位性
基本概念
リージョンとアクセスドメイン名
仕様と制限
製品の課金
課金概要
課金方式
課金項目
無料利用枠
記帳例
請求書の確認とダウンロード
お支払い遅れについて
よくある質問
クイックスタート
コンソールクイックスタート
COSBrowserクイックスタート
ユーザーガイド
リクエストの作成
バケット
オブジェクト
データ管理
バッチ処理
グローバルアクセラレーション
監視とアラーム
運用管理センター
データ処理
インテリジェントツールボックス使用ガイド
データワークフロー
アプリ統合
ツールガイド
ツール概要
環境のインストールと設定
COSBrowserツール
COSCLIツール
COSCMDツール
COS Migrationツール
FTP Serverツール
Hadoopツール
COSDistCpツール
HDFS TO COSツール
オンラインツール (Onrain Tsūru)
セルフ診断ツール
実践チュートリアル
概要
アクセス制御と権限管理
パフォーマンスの最適化
AWS S3 SDKを使用したCOSアクセス
データディザスタリカバリバックアップ
ドメイン名管理の実践
画像処理の実践
COSオーディオビデオプレーヤーの実践
データセキュリティ
データ検証
COSコスト最適化ソリューション
サードパーティアプリケーションでのCOSの使用
移行ガイド
サードパーティクラウドストレージのデータをCOSへ移行
データレークストレージ
クラウドネイティブデータレイク
メタデータアクセラレーション
データアクセラレーター GooseFS
データ処理
データ処理概要
画像処理
メディア処理
コンテンツ審査
ファイル処理
ドキュメントプレビュー
トラブルシューティング
RequestId取得の操作ガイド
パブリックネットワーク経由でのCOSへのファイルアップロード速度の遅さ
COSへのアクセス時に403エラーコードが返される
リソースアクセス異常
POST Objectの一般的な異常
セキュリティとコンプライアンス
データ災害復帰
データセキュリティ
クラウドアクセスマネジメント
よくある質問
よくあるご質問
一般的な問題
従量課金に関するご質問
ドメインコンプライアンスに関するご質問
バケット設定に関する質問
ドメイン名とCDNに関するご質問
ファイル操作に関するご質問
権限管理に関するご質問
データ処理に関するご質問
データセキュリティに関するご質問
署名付きURLに関するご質問
SDKクラスに関するご質問
ツール類に関するご質問
APIクラスに関するご質問
Agreements
Service Level Agreement
プライバシーポリシー
データ処理とセキュリティ契約
連絡先
用語集

発効条件

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-07-14 10:13:41

概要

発効条件とはアクセスポリシー言語の一部であり、完全な発効条件には次の要素が含まれます。
条件キー:発効条件の具体的な種類を表します。例えば、ユーザーのアクセス元のIP、権限承認時間などです。
条件オペレーター:発効条件の判断方法を表します。
条件値:条件キーの値です。
詳細についてはCAM発効条件をご参照ください。
説明:
条件キーを使用してポリシーを作成する際は、必ず最小権限の原則を遵守し、適用可能なリクエスト(action)にのみ該当する条件キーを追加してください。アクション(action)を指定する際にワイルドカード「*」を使用すると、リクエストが失敗しますので避けてください。
Cloud Access Management(CAM)コンソールを使用してポリシーを作成する際は、構文形式にご注意ください。version、principal、statement、effect、action、resource、conditionの構文要素は全て小文字で記述してください。

発効条件の例

次のバケットポリシーの例における発効条件(condition)は、ユーザーが10.217.182.3/24または111.21.33.72/24ネットワークセグメントに属している場合にのみ、cos:PutObjectアクションの権限付与が完了することを表します。このうち、
条件キーqcs:ipであり、発効条件の種類がIPであることを表します。
条件オペレーターip_equalであり、発効条件の判断方法がIPアドレスの同一性であることを表します。
条件値は配列["10.217.182.3/24","111.21.33.72/24"]であり、発効条件判断の規定値を表します。ユーザーが配列の中の任意のIPがあるネットワークセグメントに属している場合、条件判断はすべてtrueとなります。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"name/cos:PutObject"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"ip_equal":{
"qcs:ip":[
"10.217.182.3/24",
"111.21.33.72/24"
]
}
}
}
]
}

COSのサポートする条件キー

Cloud Object Storage(COS)のサポートする条件キーには2種類あり、1つはIP、VPC、HTTPSを含むすべてのリクエストに適用可能なもので、もう1つはリクエストヘッダーおよびリクエストパラメータによる条件キーであり、一般的にこのリクエストヘッダーまたはリクエストパラメータを持つリクエストにのみ適用できます。これらの条件キーに関する説明および実際の使用例については、条件キーの説明およびユースケースのドキュメントをご参照ください。
説明:
発効条件、条件キーなどの概念はすべてユーザーリクエストを対象としてCAMが実行するものです。ライフサイクル、バケットコピールールが有効になっている場合の削除、コピーなどの動作はCOSが行うものであり、ユーザーによるリクエストではないため、条件キーがライフサイクル、バケットコピールールに対して起こす動作は無効となります。

ほとんどのリクエストに適用される条件キー

第一類、ほとんどのリクエストに適用される条件キーは、以下の通りです。
条件キー
適用リクエスト
意味
タイプ
すべてのリクエスト
リクエストにHTTPSプロトコルが適用されているかどうか確認
Boolean
すべてのリクエスト
リクエスト元のIPネットワークセグメント
IP
すべてのhttpsリクエスト
httpsリクエストに使用しているTLSバージョン
Numeric
cos:host
すべてのリクエスト
リクエストのHostヘッダー
String

リクエストヘッダーおよびリクエストパラメータによる条件キー

2種類目は、リクエストヘッダー(Header)およびリクエストパラメータ(Param)による条件キーです。リクエストごとにリクエストヘッダーおよびリクエストパラメータが異なるため、これらの条件キーは一般的にこの種類のヘッダーまたはリクエストパラメータが含まれるリクエストにのみ適します。
例えば、条件キーcos:content-typeは、リクエストヘッダーContent-Typeを使用する必要があるアップロードクラスのリクエスト(PutObjectなど)に適用できます。条件キーcos:response-content-typeはGetObjectオブジェクトにのみ適用できます。このリクエストのみがリクエストパラメータresponse-content-typeをサポートしているためです。
COSが現在サポートしている、リクエストヘッダーおよびリクエストパラメータによる条件キーと、それらの条件キーが適用可能なリクエストは下表のとおりです。
条件キー
適用リクエスト
リクエストヘッダー/リクエストパラメータの確認
タイプ
PutObject
PostObject
InitiateMultipartUpload
リクエストヘッダー:x-cos-storage-class
String
GetObject
DeleteObject
PostObjectRestore
PutObjectTagging
GetObjectTagging
DeleteObjectTagging
HeadObject
リクエストパラメータ:versionid
String
GetBucket
GetBucketObjectVersions
ListMultipartUploads
ListLiveChannels
リクエストパラメータ:prefix
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
リクエストヘッダー:x-cos-acl
String
このリクエストは適用範囲が広いため、リクエストボディ付きのリクエストなどの代表的なリクエストに注目
リクエストヘッダー:Content-Length
Numeric
このリクエストは適用範囲が広いため、リクエストボディ付きのリクエストなどの代表的なリクエストに注目
リクエストヘッダー:Content-Type
String
GetObject
リクエストパラメータ:response-content-type
String
PutBucket
PutBucketTagging
リクエストヘッダー:x-cos-tagging
リクエストパラメータ:tagging
String
PutObject
PutObject-Copy
InitiateMultipartUpload
CompleteMultipartUpload
リクエストヘッダー:x-cos-forbid-overwrite
String
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
リクエストヘッダー:x-cos-object-lock-mode
リクエストボディのフィールド:PutObjectRetentionリクエストボディのRetention.Mode
String
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
リクエストヘッダー:x-cos-object-lock-remaining-retention-days
リクエストボディのフィールド:PutObjectRetentionリクエストボディのRetention.RetainUntilDate
Timestamp
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
リクエストヘッダー:x-cos-object-lock-remaining-retention-days
リクエストボディのフィールド:リクエストボディのフィールド:PutObjectRetentionリクエストボディのRetention.RetainUntilDate
Timestamp
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
リクエストヘッダー:x-cos-grant-read
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
リクエストヘッダー:x-cos-grant-read-acp
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
リクエストヘッダー:x-cos-grant-write
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
リクエストヘッダー:x-cos-grant-write-acp
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
Request header:x-cos-grant-full-control
String

条件オペレーター

COSの条件キーは次の条件オペレーターをサポートしており、文字列(String)、数値型(Numeric)、ブール型(Boolean)およびIPなどの様々なタイプの条件キーに適用できます。
条件オペレーター
意味
タイプ
string_equal
文字列一致(大文字と小文字を区別)
String
string_not_equal
文字列不一致(大文字と小文字を区別)
String
string_like
文字列が類似(大文字と小文字を区別)。現在は文字列の前後へのワイルドカード*の追加をサポートしています(例:image/*
String
ip_equal
IP一致
IP
ip_not_equal
IP不一致
IP
numeric_equal
数値一致
Numeric
numeric_not_equal
数値不一致
Numeric
numeric_greater_than
数値が大きい
Numeric
numeric_greater_than_equal
数値が同じか大きい
Numeric
numeric_less_than
数値が小さい
Numeric
numeric_less_than_equal
数値が同じか小さい
Numeric

_if_existの意味

上記のすべての条件オペレーターは、その後に_if_existを追加することで単一条件オペレーターとすることができます。例えば、string_equal_if_existなどです。条件オペレーターに_if_existが含まれるかどうかで異なる点は、リクエストに、条件キーに対応するリクエストヘッダーまたはリクエストパラメータが含まれない場合にどのように処理されるかの違いです。
_if_existを含まない条件演算子(例:string_equal)を使用した場合、該当するリクエストヘッダーまたパラメータがリクエストに含まれていないと、デフォルトで条件に一致せず、Falseとなります。
条件オペレーターに_if_existが含まれる場合、例えばstring_equal_if_existの場合は、リクエストに対応するリクエストヘッダー/リクエストパラメータが含まれないとき、デフォルトで条件にヒットし、Trueとなります。

事例

事例1:指定されたオブジェクトバージョンのダウンロードを許可

例えば、次のバケットポリシーについて、エフェクトがallowの場合は、リクエストパラメータversionidによる“MTg0NDUxNTc1NjIzMTQ1MDAwODg”のGetObjectリクエストの承認が許可されることを表します。条件にヒットした場合(True)、allowの権限付与ポリシーに基づいてリクエストは承認されます。条件にヒットしなかった場合(False)、allowの権限付与ポリシーに基づいて、リクエストは権限を得られず、リクエストは失敗します。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"name/cos:GetObject"
],
"condition":{
"string_equal":{
"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
}
},
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
]
}
条件オペレーターがstring_equalまたはstring_equal_if_existの場合、conditionのヒット状況およびリクエストが承認されるかどうかは下表のとおりとなります。
条件オペレーター
リクエスト
conditionにヒットするか
リクエストが承認されるか
string_equal
versionidなし
FALSE
不承認
string_equal_if_exist
versionidなし
TRUE
承認
string_equal
versionid付き、指定のもの
TRUE
承認
string_equal_if_exist
versionid付き、指定のもの
TRUE
承認
string_equal
versionid付き、指定のもの以外
FALSE
不承認
string_equal_if_exist
versionid付き、指定のもの以外
FALSE
不承認

事例2:指定されたオブジェクトバージョンのダウンロードを拒否

次のバケットポリシーの例では、エフェクトがdenyであり、リクエストパラメータversionidによる「MTg0NDUxNTc1NjIzMTQ1MDAwODg」のGetObjectリクエストが拒否されることを表します。条件にヒットした場合(True)、denyの権限付与ポリシーに基づいてリクエストは失敗します。条件にヒットしなかった場合(False)、denyの権限付与ポリシーに基づいて、リクエストは拒否されません。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"name/cos:GetObject"
],
"condition":{
"string_equal":{
"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
}
},
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
]
}
条件オペレーターがstring_equalまたはstring_equal_if_existの場合、conditionのヒット状況およびリクエストが拒否されるかどうかは下表のとおりとなります。
条件オペレーター
リクエスト
conditionにヒットするか
リクエストが拒否される/拒否されない
string_equal
versionidなし
FALSE
拒否されない
string_equal_if_exist
versionidなし
TRUE
拒否される
string_equal
versionid付き、指定のもの
TRUE
拒否される
string_equal_if_exist
versionid付き、指定のもの
TRUE
拒否される
string_equal
versionid付き、指定のもの以外
FALSE
拒否されない
string_equal_if_exist
versionid付き、指定のもの以外
FALSE
拒否されない

関連説明

特殊文字はurlencodeでの処理が必要

リクエストパラメータ内の特殊文字はurlencodeでの処理が必要です。このため、バケットポリシーの中で、リクエストパラメータによる条件キーを使用する場合は、先にurlencode処理をしておく必要があります。例えば、cos:response-content-type条件キーを使用する際、条件値が"image/jpeg"であれば、必ずurlencodeで"image%2Fjpeg"に変換してからバケットポリシーに入力する必要があります。

最小権限の原則に従い、*の使用を避ける

条件キーを使用する際は最小権限の原則に従い、権限の設定が必要なactionのみを追加し、ワイルドカード「*」の使用は避けてください。ワイルドカード「*」を乱用すると、一部のリクエストが失敗する場合があります。例えば次の例のように、GetObject以外の他のリクエストはいずれもリクエストパラメータresponse-content-typeの使用をサポートしていません。
deny + string_equal_if_exist条件オペレーターはリクエスト内にこの条件キーがない場合、デフォルトでtrueとして処理します。このため、PutObject、PutBucketなどのリクエストを発行した際に、このdeny statementにヒットし、リクエストが拒否されます。
allow + string_equalはリクエストにこの条件キーがない場合、デフォルトでfalseとして処理します。このため、PutObject、PutBucketなどのリクエストを発行した際に、このallow statementにヒットすることができず、リクエストが許可されません。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_equal":{
"cos:response-content-type":"image%2Fjpeg"
}
}
},
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_not_equal_if_exist":{
"cos:response-content-type":"image%2Fjpeg"
}
}
}
]
}
別の方法として、allow+string_equal_if_existおよびdeny + string_not_equalを使用すると、response-content-typeリクエストパラメータを含まないリクエストが許可されます。
deny + string_equal条件オペレーターはリクエスト内にこの条件キーがない場合、デフォルトでfalseとして処理します。このため、PutObject、PutBucketなどのリクエストを発行した際に、このdeny statementにヒットせず、リクエストは拒否されません。
allow + string_equal_if_existはリクエスト内にこの条件キーがない場合、デフォルトでtrueとして処理します。このため、PutObject、PutBucketなどのリクエストを発行した際に、allow statementにヒットすることができ、リクエストは権限を取得します。
ただし、このように条件オペレーターを使用すると、GetObjectにresponse-content-typeを含めるかどうかの制限が行えなくなります。GetObjectにresponse-content-typeリクエストパラメータが含まれない場合は、他のリクエストと同様にデフォルトで許可されます。GetObjectにresponse-content-typeリクエストパラメータが含まれる場合のみ、ご自身で定めた条件に従って、リクエストパラメータの内容が意図するものと一致しているかを確認することができ、それによって条件付きの権限付与を実現できます。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_equal_if_exist":{
"cos:response-content-type":"image%2Fjpeg"
}
}
},
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_not_equal":{
"cos:response-content-type":"image%2Fjpeg"
}
}
}
]
}
このため、より安全な方法は、最小権限の原則に従い、ワイルドカード「*」を使用せず、actionをGetObjectに限定することとなります。
次の例では、ポリシーの発効条件は、「GetObjectリクエストに必ずresponse-content-typeが含まれ、かつリクエストパラメータの値が必ずimage%2Fjpeg"である場合にのみ権限を得られる」と厳格に限定されています。
その他のリクエストは次の例におけるポリシーの影響を受けないため、最小権限の原則に従って、追加で単独の権限を付与することができます。
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"name/cos:GetObject"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_equal":{
"cos:response-content-type":"image%2Fjpeg"
}
}
},
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"name/cos:GetObject"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_not_equal_if_exist":{
"cos:response-content-type":"image%2Fjpeg"
}
}
}
]
}


ヘルプとサポート

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

フィードバック