Node.js SDK を使用して、Referer リクエストヘッダーに基づいて Object Storage Service (OSS) のアクセスルールを設定できます。Referer のホワイトリスト、ブラックリストを設定したり、空の Referer ヘッダーを許可するかどうかを指定したりできます。これらのルールにより、指定された Referer からの OSS ファイルへのアクセスがブロックされます。これにより、他の Web サイトからのホットリンクを防ぎ、不要なトラフィックコストを回避できます。
注意事項
ホットリンク保護を設定する前に、この機能についてよく理解しておく必要があります。詳細については、「ホットリンク保護」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化 (Node.js SDK)」をご参照ください。
ホットリンク保護ルールを設定または削除するには、
oss:PutBucketReferer権限が必要です。ホットリンク保護ルールを取得するには、oss:GetBucketReferer権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
ホットリンク保護の設定
次のコードは、ホットリンク保護ルールを設定する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// yourregion をバケットが配置されているリージョンに置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket'
});
async function putBucketReferer () {
try {
const result = await client.putBucketReferer(client.options.bucket, true, [
'http://www.aliyun.com',
'https://www.aliyun.com'
]);
console.log(result);
} catch (e) {
console.log(e);
}
}
putBucketReferer();ホットリンク保護設定の取得
次のコードは、ホットリンク保護設定を取得する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// yourregion をバケットが配置されているリージョンに置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードサンプルを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname をバケット名に置き換えます。
bucket: 'yourbucketname'
});
async function getBucketReferer () {
try {
const result = await client.getBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
getBucketReferer();ホットリンク保護ルールの削除
次のコードは、ホットリンク保護ルールを削除する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// yourregion をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードサンプルを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname をバケット名に設定します。
bucket: 'yourbucketname'
});
async function deleteBucketReferer () {
try {
const result = await client.deleteBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
deleteBucketReferer();関連ドキュメント
ホットリンク保護を設定するために使用される完全なサンプルコードについては、GitHub をご参照ください。
ホットリンク保護ルールを設定するために使用される API 操作の詳細については、「PutBucketReferer」をご参照ください。
ホットリンク保護設定を取得するために使用される API 操作の詳細については、「GetBucketReferer」をご参照ください。