注意:サブユーザーまたはコラボレーターにアクセスポリシーを追加する際は、必ず業務の必要性に応じて、最小権限の原則に従って権限を付与してください。サブユーザーまたはコラボレーターに対し、すべてのリソース
(resource:*)
またはすべてのアクション(action:*)
の権限を直接与えてしまうと、権限の範囲が大きすぎるためにデータセキュリティ上のリスクが生じる場合があります。
アクセスポリシーはCloud Object Storage(COS)リソースへのアクセス権限を付与するために用いられます。アクセスポリシーにはJSONをベースにしたアクセスポリシー言語を使用します。アクセスポリシー言語の権限によって、指定するプリンシパル(principal)に指定のCOSリソースに対する指定のアクションを実行させることができます。
アクセスポリシー言語はバケットポリシー(Bucket Policy)の基本要素および使用法を記述するものです。ポリシー言語の説明に関してはCAMポリシー管理をご参照ください。
アクセスポリシー言語には次の基本的な意味を持つ要素が含まれます。
プリンシパル(principal)の要素はリソースへのアクセスを許可される、または拒否されるユーザー、アカウント、サービスまたはその他のエンティティを指定するために用いられます。principalの要素はバケット内でのみ作用します。ユーザーポリシーでは指定する必要がありませんが、これはユーザーポリシーが特定のユーザーに直接付加されるものだからです。principalの指定の例は次のとおりです。
"principal":{
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000001"
]
}
匿名ユーザーに権限を付与:
"principal":{
"qcs": [
"qcs::cam::anonymous:anonymous"
]
}
ルートアカウントUIN 100000000001に権限を付与:
"principal":{
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000001"
]
}
サブアカウントUIN 100000000011(ルートアカウントのUINは100000000001)に権限を付与:
注意:操作を行う前に、サブアカウントがルートアカウントのサブアカウントリストに追加されていることを確認する必要があります。
"principal":{
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000011"
]
}
リソースへのアクセス権限を明示的に付与(許可)していない場合、アクセスは暗黙的に拒否されます。リソースへのアクセスを明示的に拒否(deny)することもでき、そうした場合はユーザーがそのリソースに確実にアクセスできなくなります。これは他のポリシーがアクセス権限を付与している場合であっても同様です。許可のエフェクトを指定する例を次に挙げます。
"effect" : "allow"
COSはポリシーの中で、ある特定のCOSアクションを指定することができると定義しています。指定するアクションは発行されるAPIのリクエスト操作 と完全に同じです。一部のバケット操作およびオブジェクト操作を次に列記します。その他の具体的な操作については、API操作リストのドキュメントをご参照ください。
説明 | 対応するAPIインターフェース |
---|---|
name/cos:GetService | GET Service |
name/cos:GetBucket | GET Bucket (List Objects) |
name/cos:PutBucket | PUT Bucket |
name/cos:DeleteBucket | DELETE Bucket |
説明 | 対応するAPIインターフェース |
---|---|
name/cos:GetObject | GET Object |
name/cos:PutObject | PUT Object |
name/cos:HeadObject | HEAD Object |
name/cos:DeleteObject | DELETE Object |
アクション許可の指定の例を次に示します。
"action":[
"name/cos:GetObject",
"name/cos:HeadObject"
]
リソース(resource)要素は単一または複数の操作オブジェクト(COSバケットまたはオブジェクトなど)を記述します。すべてのリソースには下記の6セグメント式の記述方法を使用することができます。
qcs:project_id:service_type:region:account:resource
パラメータの説明は次のとおりです。
パラメータ | 説明 | 入力必須かどうか |
---|---|---|
qcs | qcloud serviceの略称であり、Tencent Cloudのクラウドサービスであることを表します。 | はい |
project_id | プロジェクト情報を記述します。CAMのレガシーロジックとの互換性のためにのみ使用されます。 | オプション |
service_type | 「COS」のような、製品の略称を記述します。 | はい |
region | リージョンの情報を説明します。Tencent Cloud COSがサポートするアベイラビリティリージョンをご参照ください。 | はい |
account | リソース所有者のルートアカウント情報を記述します。現在、リソース所有者の記述方式は2種類をサポートしています。1つはuin方式、すなわちルートアカウントのUINアカウントであり、uin/${OwnerUin} で表され、uin/100000000001のようになります。もう1つはuid方式、すなわちルートアカウントのAPPIDであり、uid/${appid} で表され、uid/1250000000のようになります。現在、COSのリソース所有者はすべてuid方式を使用して記述され、ルートアカウントの開発者APPIDとなります。 |
はい |
resource | 具体的なリソースの詳細を記述します。COSサービスではバケットのXML APIアクセスドメイン名を使用して記述します。 | はい |
バケットexamplebucket-1250000000を指定する例を次に挙げます。
"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]
バケットexamplebucket-1250000000内の/folder/フォルダ下の全オブジェクトを指定する例を次に挙げます。
"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/folder/*"]
バケットexamplebucket-1250000000内のオブジェクト、/folder/exampleobjectを指定する例を次に挙げます。
"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/folder/exampleobject"]
アクセスポリシー言語は権限承認を受ける際の条件を指定することができます。例えばユーザーのアクセス元の制限、権限承認時間の制限などです。現在サポートされている条件オペレーターのリストおよび一般的な条件キーとその例などの情報を次に列記します。
条件オペレーター | 意味 | 条件名 | 例 |
---|---|---|---|
ip_equal | IP一致 | qcs:ip | {"ip_equal":{"qcs:ip ":"10.121.2.0/24"}} |
ip_not_equal | IP不一致 | qcs:ip | {"ip_not_equal":{"qcs:ip ":["10.121.1.0/24", "10.121.2.0/24"]}} |
以下は、アクセスIPが10.121.2.0/24のネットワークセグメント内という条件を満たす例です。
"ip_equal":{"qcs:ip ":"10.121.2.0/24"}
以下は、アクセスIPが101.226.100.185および101.226.100.186であるという条件を満たす例です。
"ip_equal":{
"qcs: ip": [
"101.226.100.185",
"101.226.100.186"
]
}
ルートアカウントが匿名ユーザーを許可し、アクセス元のIPが101.226.100.185または101.226.100.186であった場合、華南リージョンのバケットexamplebucket-1250000000内のオブジェクトに対し、GET(ダウンロード)およびHEAD操作を実行し、認証は必要ありませんでした。その他の事例については、権限設定の関連事例をご参照ください。
{
"version": "2.0",
"principal":{
"qcs": [
"qcs: : cam: : anonymous: anonymous"
]
},
"statement":[
{
"action":[
"name/cos: GetObject",
"name/cos: HeadObject"
],
"condition":{
"ip_equal":{
"qcs: ip": [
"101.226.100.185",
"101.226.100.186"
]
}
},
"effect": "allow",
"resource":[
"qcs: : cos: ap-guangzhou: uid/1250000000: examplebucket-1250000000.ap-guangzhou.myqcloud.com/*"
]
}
]
}
この記事はお役に立ちましたか?