デフォルトでは、Cloud Object Storage(COS)のリソース(バケット、オブジェクト)はすべてプライベート読み取り/書き込みであり、オブジェクトのURLを取得しても、匿名ユーザーは署名がないため、URLからリソースの内容にアクセスすることはできません。
主な手順
COSの権限承認およびID認証のフローは、Tencent Cloudアカウントの登録から始まる5段階となっています。Tencent Cloudアカウントの登録、COSサービスの有効化、権限承認IDの作成、IDへの権限設定、アクセスとID認証の開始、の5つです。
ステップ1:Tencent Cloudアカウントの登録
Tencent Cloudアカウントの登録後、お客様のアカウントはルートアカウントとして存在します。ルートアカウントは最高権限を有します。
ステップ2:COSサービスのアクティブ化
COSサービスをアクティブ化すると、お客様の作成したすべてのバケットがルートアカウントの所有となります、ルートアカウントはすべてのリソースの最高使用権限を有するとともに、サブアカウントを作成してサブアカウントの権限承認を行う権限を有します。
ステップ3:権限承認IDの作成
注意:
バケットまたはオブジェクトをパブリック読み取りとして開放している場合を除き、COSへのアクセスには必ずID認証を経なければなりません。
ルートアカウントによって複数のIDを作成し、それぞれ異なるリソースの異なる使用権限を付与することができます。
例えば会社の同僚、特定部門のユーザーなどの指定したユーザーに権限承認を行いたい場合は、Cloud Access Management(CAM)コンソールでこれらのユーザーにサブアカウントを作成し、その後バケットポリシー、ユーザーポリシー(CAMポリシー)、バケットACL、オブジェクトACLなどの様々な権限承認方式によって、サブアカウントに指定したリソースの指定したアクセス権限を承認することができます。 例えば第三者が何のID認証も経ずに直接URLからオブジェクトをダウンロードすることを許可するなど、匿名ユーザーに権限承認を行いたい場合は、リソース権限をデフォルトのプライベート読み取りからパブリック読み取りに変更する必要があります。
Tencent Cloudのその他のサービス(CDNなど)でCOSバケットを使用したい場合も、同様の権限承認のフローに従う必要があります。お客様の許可の下で、これらのサービスはサービスロールによって正しくCOSにアクセスすることができます。作成済みのサービスロールはCAMコンソールで確認できます。
異なるTencent Cloudアカウント間で権限承認を行う状況で、1つのCOSバケットにのみ権限承認を行いたい場合は、 バケットポリシーまたはバケットACLによって直接別のルートアカウントに権限承認を行うことができます。複数のCOSバケットまたは複数のTencent Cloudリソース権限承認が必要な場合は、CAMコンソールでコラボレーターIDを作成し、より広範囲の権限承認を行うことができます。 ステップ4:IDへの権限設定
ステップ5:アクセスとID認証の開始
COSにはコンソール、APIリクエスト、SDKなどの複数の手段でアクセスすることができます。セキュリティ上の観点から、バケットはデフォルトではプライベート読み取りとなっており、どの手段であってもID認証を経る必要があります。コンソールの場合は、アカウントパスワードを使用するとログインできます。APIリクエストおよびSDKの場合、すべてのユーザーはキー(SecretId/SecretKey)を使用してID認証を受ける必要があります。
COSのID認証方式
デフォルトではCOSバケットはプライベートであり、キー (パーマネントキー、一時キー)によるCOSアクセスであっても署名付きURLを使用したアクセスであっても、ID認証の段階を経る必要があります。特別な必要性がある場合はバケットをパブリック読み取りとして開放することもできますが、これはリスクを伴う操作であり、あらゆるユーザーがID認証を経ることなく、オブジェクトURLから直接オブジェクトをダウンロードできてしまいます。
1. パーマネントキーを使用したアクセス
キー(SecretId/SecretKey)は、ユーザーがTencent Cloud APIキーにアクセスしてID認証を受ける際に必要なセキュリティ証明書であり、APIキー管理で取得することができます。各ルートアカウントおよびサブアカウントはいずれも複数のキーを作成することができます。 パーマネントキーにはSecretIdとSecretKeyが含まれます。各ルートアカウントおよびサブアカウントはいずれも2対のパーマネントキーを生成することができます。パーマネントキーはアカウントの永続的なIDを表すもので、削除しなければ長期的に有効です。詳細については、パーマネントキーを使用したCOSアクセスをご参照ください。 2. 一時キーを使用したアクセス
一時キーにはSecretId、SecretKey、Tokenが含まれます。各ルートアカウントおよびサブアカウントはいずれも複数の一時キーを生成することができます。パーマネントキーと比較して、一時キーには有効期間(デフォルトでは1800秒)があり、有効期間はルートアカウントでは最長7200秒まで、サブアカウントでは最長129600秒までそれぞれ設定可能です。詳細については、フェデレーションによる一時アクセス証明書の取得をご参照ください。
一時キーはフロントエンドの直接送信などの、一時的な権限承認のシーンに適します。信頼性の低いユーザーに対しては、パーマネントキーではなく一時キーを発行することで、安全性を高めることができます。詳細については、一時キーを使用したCOSアクセスをご参照ください。 3. 一時URLを使用したアクセス(署名付きURL)
オブジェクトのダウンロード
第三者がバケットからオブジェクトをダウンロードできるようにし、なおかつ相手にCAMアカウントまたは一時キーなどの方法を使用させたくない場合は、署名付きURLを使用して署名を第三者に渡し、一時的なダウンロード操作を完了させることができます。有効な署名付きURLを受領した人は誰でもオブジェクトをダウンロードできます。
コンソールまたはCOSBrowserから一時ダウンロードリンクを取得する(有効期間1~2時間)
コンソールまたはCOSBrowserから、一時ダウンロードリンクを直接素早く取得し、ブラウザでこのリンクを直接入力することでオブジェクトをダウンロードできます。詳細については、一時リンクのスピーディーな取得のドキュメントをご参照ください。 SDKを使用した署名付きURLの生成
SDKを使用して、有効期間をカスタマイズした署名付きURLを一括取得することができます。詳細については、SDKを使用した署名付きURLの一括取得のドキュメントをご参照ください。 署名ツールを使用した署名付きURLの生成
プログラミングに不慣れなユーザーに適しており、有効期間をカスタマイズした署名付きURLを取得することができます。詳細については、署名ツールの使用に関するドキュメントをご参照ください。
ご自身での署名リンクの結合
署名付きURLは実際にはオブジェクトのURLの後に署名を結合したものです。このため、SDK、署名生成ツールなどによってご自身で署名を生成し、URLと署名を結合して署名リンクとすることもできます。ただし、署名生成のアルゴリズムは複雑なため、一般的な状況ではこの方法の使用は推奨しません。
オブジェクトのアップロード
第三者がオブジェクトをバケットにアップロードできるようにし、なおかつ相手にCAMアカウントまたは一時キーなどの方法を使用させたくない場合は、署名付きURLを使用して署名を第三者に渡し、一時的なアップロード操作を完了させることができます。有効な署名付きURLを受領した人は誰でもオブジェクトをアップロードできます。
手段1:SDKを使用した署名付きURLの生成
各言語のSDKがアップロード署名付きURLの生成メソッドを提供しています。生成メソッドについては、署名付きURLによるアップロード権限承認を参照し、使いやすい開発言語を選択してください。 手段2:ご自身での署名リンクの結合
署名付きURLは実際にはオブジェクトのURLの後に署名を結合したものです。このため、SDK、署名生成ツールなどによってご自身で署名を生成し、URLと署名を結合して署名リンクとし、オブジェクトのアップロードに用いることもできます。署名生成のアルゴリズムは複雑なため、一般的な状況ではこの方法の使用は推奨されないことに注意が必要です。
4. 匿名アクセス
デフォルトではCOSバケットはプライベートであり、キー (パーマネントキー、一時キー)によるCOSアクセスであっても署名付きURLを使用したアクセスであっても、ID認証の段階を経る必要があります。
特別な必要性がある場合はバケットまたはオブジェクトをパブリック読み取りとして開放することもできますが、あらゆるユーザーがいかなるID認証も経ることなく、オブジェクトURLから直接オブジェクトをダウンロードできてしまいます。
注意:
リソースをパブリック読み取りとして開放することにはセキュリティ上のリスクが伴います。リソースのリンクが一度漏洩すると、誰でもアクセス可能となり、悪意あるユーザーによってトラフィックが不正使用されるおそれがあります。
バケットをパブリック読み取りとして開放する
コンソール上でバケット全体をパブリック読み取りに設定することができます。この場合、バケット内の各オブジェクトはすべてオブジェクトURLから直接ダウンロード可能となります。設定方法については、バケットアクセス権限の設定をご参照ください。 オブジェクトをパブリック読み取りとして開放する
コンソール上で単一のオブジェクトをパブリック読み取りに設定することができます。この場合、そのオブジェクトのみ、URLから直接ダウンロード可能となり、その他のオブジェクトは影響を受けません。設定方法については、オブジェクトのアクセス権限の設定をご参照ください。 フォルダをパブリック読み取りとして開放する
コンソール上でフォルダをパブリック読み取りに設定することができます。この場合、そのフォルダ下のすべてのオブジェクトがURLから直接ダウンロード可能となり、フォルダ外のオブジェクトは影響を受けません。設定方法については、フォルダの権限の設定をご参照ください。
この記事はお役に立ちましたか?