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」をご参照ください。