Cloud Object Storage(COS)のリソースについては、異なる企業間または社内の複数のチーム間で、チームまたは要員ごとに異なるアクセス権限を持つよう設定する必要があります。Cloud Access Management(CAM)を使用することで、バケットまたはオブジェクトごとに異なる操作権限を設定し、異なるチームまたは要員同士によるコラボレーションを可能にします。
まず、重要な概念であるルートアカウント、サブアカウント(ユーザー)およびユーザーグループについての理解が必要です。CAMの関連用語、設定の詳細説明については、CAMの用語集をご参照ください。
ルートアカウントはデベロッパーとも呼ばれます。ユーザーがTencent Cloudアカウントを申請すると、システムはTencent CloudサービスにログインするためのルートアカウントIDを作成します。ルートアカウントはTencent Cloudリソースの使用量の計算と課金における基本主体です。
ルートアカウントはデフォルトで、その名前の下にあるすべてのリソースへの完全なアクセス権限を有します。これには注文情報へのアクセス、ユーザーパスワードの変更、ユーザーおよびユーザーグループの作成、他のクラウドサービスリソースへのアクセスなどが含まれます。デフォルトでは、リソースにアクセスできるのはルートアカウントのみであり、他のユーザーからのアクセスはすべてルートアカウントによる権限承認を経る必要があります。
サブアカウントへのCOSアクセス権限の承認には、サブアカウントの作成、サブアカウントへの権限承認、サブアカウントによるCOSリソースへのアクセスという3つの手順があります。
CAMコンソールでサブアカウントを作成し、サブアカウントにアクセス権限承認の設定を行うことができます。具体的な操作は次のとおりです。
カスタムポリシーを作成するか、または既存のポリシーを選択し、ポリシーをサブアカウントにバインドします。
上記のステップ1で設定した2種類のアクセス方法、プログラムアクセスとTencent Cloudコンソールアクセスについての説明は次のとおりです。
(1)プログラムアクセス
サブアカウントを使用し、プログラム(API、SDK、ツールなど)によってCOSリソースにアクセスする場合は、先にルートアカウントのAPPID、サブアカウントのSecretIdおよびSecretKey情報を取得する必要があります。サブアカウントのSecretIdとSecretKeyはCAMコンソールで生成できます。
この時点で、サブアカウントのSecretIdとSecretKey、ルートアカウントのAPPIDによってCOSリソースにアクセスすることが可能になりました。
注意:サブアカウントはXML APIまたはXML APIベースのSDKによってCOSリソースにアクセスする必要があります。
XMLベースのJava SDKコマンドラインの場合、入力する必要があるパラメータは次のとおりです。
// ID情報の初期化
COSCredentials cred = new BasicCOSCredentials("<ルートアカウントのAPPID>", "<サブアカウントのSecretId>", "<サブアカウントのSecretKey>");
実際の例は次のとおりです。
String secretId = System.getenv("secretId");//サブアカウントのSecretIdです。権限承認は最小権限ガイドに従って行い、使用上のリスクを低減させます。サブアカウントキーの取得については、https://cloud.tencent.com/document/product/598/37140をご参照ください
String secretKey = System.getenv("secretKey");//サブアカウントのSecretKeyです。権限承認は最小権限ガイドに従って行い、使用上のリスクを低減させます。サブアカウントキーの取得については、https://cloud.tencent.com/document/product/598/37140をご参照ください
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// ID情報の初期化
COSCredentials cred = new BasicCOSCredentials("<ルートアカウントのAPPID>", secretId, secretKey);
COSCMDの設定コマンドの場合、入力する必要があるパラメータは次のとおりです。
coscmd config -u <ルートアカウントのAPPID> -a <サブアカウントのSecretId> -s <サブアカウントのSecretKey> -b <ルートアカウントのbucketname> -r <ルートアカウントのbucket所属リージョン>
実際の例は次のとおりです。
coscmd config -u 1250000000 -a AKIDasdfmRxHPa9oLhJp**** -s e8Sdeasdfas2238Vi**** -b examplebucket -r ap-beijing
(2)Tencent Cloudコンソール
サブユーザーに権限を承認した後、サブユーザーログイン画面でルートアカウントID、サブユーザー名、サブユーザーパスワードを入力してコンソールにログインし、クラウド製品の中のCloud Object Storageを選択してクリックすると、ルートアカウント下のストレージリソースにアクセスすることができます。
以下にいくつかの典型的なシナリオでのポリシーの例を挙げます。カスタムポリシーを設定する場合は、次の参照ポリシーをコピーして入力ボックスに貼り付け、ポリシー内容を編集することができます。実際の設定に応じて変更するだけで完了です。COSの一般的なシナリオにおけるその他のポリシー構文については、アクセスポリシーの言語概要またはCAM製品ドキュメントのビジネスユースケースの部分をご参照ください。
注意:このポリシーは権限の範囲が大きいため、慎重に設定してください。
具体的なポリシーは次のとおりです。
{
"version": "2.0",
"statement":[
{
"action":[
"name/cos:*"
],
"resource": "*",
"effect": "allow"
},
{
"effect": "allow",
"action": "monitor:*",
"resource": "*"
}
]
}
サブアカウントに読み取り専用権限のみを設定する場合の、具体的なポリシーは次のとおりです。
{
"version": "2.0",
"statement":[
{
"action":[
"name/cos:List*",
"name/cos:Get*",
"name/cos:Head*",
"name/cos:OptionsObject"
],
"resource": "*",
"effect": "allow"
},
{
"effect": "allow",
"action": "monitor:*",
"resource": "*"
}
]
}
具体的なポリシーは次のとおりです。
{
"version": "2.0",
"statement":[
{
"effect": "allow",
"action":[
"cos:ListParts",
"cos:PostObject",
"cos:PutObject*",
"cos:InitiateMultipartUpload",
"cos:UploadPart",
"cos:UploadPartCopy",
"cos:CompleteMultipartUpload",
"cos:AbortMultipartUpload",
"cos:ListMultipartUploads"
],
"resource": "*"
}
]
}
次に示す例では、IPネットワークセグメントが192.168.1.0/24
および192.168.2.0/24
のアドレスだけが読み取り書き込み権限を有するよう制限しています。
より豊富な発効条件を入力する場合は、発効条件をご参照ください。
{
"version": "2.0",
"statement":[
{
"action":[
"cos:*"
],
"resource": "*",
"effect": "allow",
"condition":{
"ip_equal":{
"qcs:ip": ["192.168.1.0/24", "192.168.2.0/24"]
}
}
}
]
}
この記事はお役に立ちましたか?