課題
Alibaba Cloud Object Storage Service (OSS) を使用すると、オブジェクトはパブリック読み取りに設定されています。 ただし、匿名ユーザーはこの公開読み取りオブジェクトにアクセスできません。
原因
ファイル (オブジェクト) を公開読み取りに設定すると、すべてのユーザーがオブジェクトにアクセスできます。 ただし、次の設定では、匿名ユーザーがパブリック読み取りオブジェクトにアクセスできなくなります。
- pay-by-requesterモードの設定: pay-by-requesterモードを有効にすると、バケット内のデータを読み取るときに発生したトラフィックとリクエスト料金の支払いが要求されます。 バケット所有者はストレージ料金のみを支払います。 したがって、OSSが要求者を識別し、バケット所有者ではなく要求者に要求で発生した料金を請求できるように、要求者は認証情報を提供する必要があります。 匿名ユーザーアクセスは認証情報を保持しないため、匿名ユーザーアクセスは失敗します。
- バケットポリシーの設定: バケットポリシーはAlibaba Cloud OSSによって承認されます。 バケットポリシーを使用して、他のユーザーがOSSリソースにアクセスすることを禁止または許可できます。 したがって、バケットポリシーが匿名ユーザーのアクセスに影響を与える特定のポリシーを設定すると、匿名ユーザーにもアクセスできなくなります。
変更方法
OSSの使用中に匿名ユーザーがパブリック読み取りオブジェクトにアクセスできない場合は、次の操作を参照してこの問題を解決してください。
- まず、OSSにpay-by-requesterモードが設定されているかどうかを確認します。 pay-by-requesterモードが設定されている場合は、次の2つのソリューションを参照してください。
- pay-by-requesterモードを無効にしない場合は、バケット所有者を使用して、匿名ユーザーがアクセスできる署名付きファイルURLを生成できます。 署名付きファイルURLを生成する方法の詳細については、「オブジェクトのアップロード後にURLを取得する方法」をご参照ください。
- pay-by-requesterモードを無効にすることもできます。 詳細については、「pay-by-requesterモードの設定」をご参照ください。
- バケットポリシーに匿名ユーザーからのアクセスに影響を与えるポリシーがあるかどうかを確認します。 その場合は、匿名ユーザーからのアクセスに影響を与えるポリシーを変更または削除します。 詳細については、「バケットポリシーを使用して他のユーザーにOSSリソースへのアクセスを許可する」をご参照ください。
適用範囲
- OSS