すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ホットリンク保護 (Ruby SDK)

最終更新日:Nov 30, 2025

Ruby SDK を使用して、Object Storage Service (OSS) の Referer リクエストヘッダーに基づいてアクセスルールを設定できます。ルールには、Referer ホワイトリスト、Referer ブラックリスト、および空の Referer ヘッダーを許可するかどうかを含めることができます。この構成により、他の Web サイトが OSS ファイルをホットリンクすることを防ぎ、不要なトラフィック料金を回避できます。

注意事項

  • ホットリンク保護を設定する前に、この機能について理解しておく必要があります。詳細については、「ホットリンク保護」をご参照ください。

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSSClient インスタンスを OSS エンドポイントを使用して作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化 (Ruby SDK)」をご参照ください。

  • ホットリンク保護を設定またはクリアするには、oss:PutBucketReferer 権限が必要です。ホットリンク保護構成をクエリするには、oss:GetBucketReferer 権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。

ホットリンク保護の設定

次のコードは、ホットリンク保護を設定する方法を示しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # 中国 (杭州) リージョンを例として使用します。 エンドポイントをご利用のリージョンのものに置き換えてください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。 例:examplebucket。
bucket = client.get_bucket('examplebucket')
# バケットの Referer リストを設定します。
bucket.referer = Aliyun::OSS::BucketReferer.new(
  allow_empty: true, whitelist: ['http://www.aliyun.com', 'https:www.aliyun.com'])

ホットリンク保護構成の取得

次のコードは、ホットリンク保護構成を取得する方法を示しています。

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # 中国 (杭州) リージョンを例として使用します。 エンドポイントをご利用のリージョンのものに置き換えてください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。 例:examplebucket。
bucket = client.get_bucket('examplebucket')
ref = bucket.referer
puts ref.to_s

ホットリンク保護構成のクリア

次のコードは、ホットリンク保護構成をクリアする方法を示しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # 中国 (杭州) リージョンを例として使用します。 エンドポイントをご利用のリージョンのものに置き換えてください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。 例:examplebucket。
bucket = client.get_bucket('examplebucket')
bucket.referer = Aliyun::OSS::BucketReferer.new(allow_empty: true, whitelist: [])

リファレンス

  • ホットリンク保護を設定する API 操作の詳細については、「PutBucketReferer」をご参照ください。

  • ホットリンク保護構成を取得する API 操作の詳細については、「GetBucketReferer」をご参照ください。