ご利用の高速化ドメイン名が、Alibaba Cloud Object Storage Service (OSS) の非公開バケットを使用してアクセスを認証し、不正なトラフィックを防いでいる場合、非公開 OSS バケットのオリジンフェッチ機能を有効にできます。これにより、CDN を使用して非公開 OSS バケット内のリソースを高速化できます。
仕組みとメリット
仕組み:この機能を有効にすると、CDN は非公開 OSS バケットに送信される各オリジンリクエストのヘッダーに
Authorizationフィールドを自動的に追加します。このフィールドの値は、権限を付与された ID 情報 (セキュリティトークンサービス (STS) の一時トークンや AccessKey など) から生成された有効な署名です。OSS はこの署名を使用してリクエストを認証します。セキュアなアクセス:CDN に読み取り専用権限を付与することで、オリジンリクエストの正当性を確保できます。この方法により、非公開バケットを公開することに伴うセキュリティリスクを回避できます。
コストの最適化:エンドユーザーリクエストが CDN キャッシュから提供される場合、トラフィック料金は OSS への直接アクセスによって生成されるアウトバウンドインターネットトラフィックの料金よりも大幅に低くなります。さらに、CDN から OSS へのトラフィックは CDN back-to-origin トラフィックとして課金され、OSS からのアウトバウンドインターネットトラフィックよりも単価が低くなります。この組み合わせにより、全体的なコストを効果的に削減できます。詳細については、「CDN で高速化された OSS リソースの課金」をご参照ください。
操作手順
設定プロセスには 2 つのステップが含まれます。まず、アカウントに対して 1 回限りの権限付与を行い、次に指定された高速化ドメイン名に対してこの機能を有効にします。
CDN に OSS へのアクセス権を付与します。アカウント内のいずれかのドメイン名でこの機能を初めて使用する前に、CDN に OSS へのアクセス権限を付与する必要があります。これは、アカウントレベルの 1 回限りの権限付与です。権限付与を求められない場合は、このステップをスキップできます。
(推奨) コンソールでの権限付与
CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけて 管理 をクリックします。
ドメイン名の左側のナビゲーションウィンドウで、Back-to-Origin 設定 をクリックします。
OSS 非公開バケットへのアクセス セクションで、権限付与 をクリックします。権限付与の確認ページで、[権限付与] をクリックします。

RAM による手動での権限付与
RAM コンソールにログインします。
左側のナビゲーションウィンドウで、[権限] > [ポリシー] をクリックします。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[JSON] タブで、次のポリシーを入力します。
[OK] をクリックします。[ポリシーの作成] ページで、次の情報を入力し、[OK] をクリックします。
[ポリシー名] を
AliyunCDNAccessingPrivateOSSRolePolicyに設定します。[説明] を「この権限付与ポリシーは、CDN/DCDN が非公開 OSS バケットからオリジンフェッチを実行するために使用するロールのためのものです。OSS の読み取り専用権限が含まれています。」に設定します。
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] }左側のナビゲーションウィンドウで、[ID] > [ロール] をクリックします。
[ロール] ページで、[ロールの作成] をクリックします。
[プリンシパルタイプ] を [Alibaba Cloud アカウント] に設定し、[プリンシパル名] に [現在の Alibaba Cloud アカウント] を選択して、[OK] をクリックします。
[ロールの作成] ステップで、次の情報を入力します。
[ロール名] を AliyunCDNAccessingPrivateOSSRole に設定します。
ロールが作成されたら、[ロール] ページのロールリストで AliyunCDNAccessingPrivateOSSRole をクリックして、ロールの詳細ページに移動します。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックし、次の情報を入力して [OK] をクリックします。
[権限] タブに切り替えて、[権限を付与] をクリックします。
リソース範囲:アカウント
プリンシパル:作成した AliyunCDNAccessingPrivateOSSRole を選択します。
権限ポリシー:[カスタム] [ポリシー] を選択し、作成した AliyunCDNAccessingPrivateOSSRolePolicy を選択して、[権限の付与] をクリックします。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cdn.aliyuncs.com" ] } } ], "Version": "1" }CDN コンソールの Back-to-Origin 設定 ページに戻ります。これで、OSS 非公開バケットへのアクセス 機能の権限付与が完了しました。
OSS 非公開バケットへのアクセス を有効にし、オリジンフェッチタイプを設定します。
OSS 非公開バケットへのアクセス セクションを見つけて、スイッチをオンにします。
OSS 非公開バケットへのアクセス ダイアログボックスで、オリジンフェッチタイプを選択し、確定 をクリックします。

オリジンフェッチタイプ
推奨されるユースケース
[同一アカウント内のバケット]
(推奨) CDN と OSS バケットが同じ Alibaba Cloud アカウントにある場合に適しています。システムは自動的に STS 一時トークンを使用して認証します。これにより、設定が簡素化され、キーを管理する必要がなくなり、より高いセキュリティが提供されます。
[アカウント間または同一アカウント内のバケット]
CDN と OSS バケットが異なる Alibaba Cloud アカウントに属する場合に適しています。同一アカウントのシナリオもサポートします。この方法では、宛先の非公開 OSS バケットが属する Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を手動で提供する必要があります。詳細については、「AccessKey ペアの作成」をご参照ください。
説明アクセス範囲:この機能を有効にすると、高速化ドメイン名はオリジンの非公開バケット内のすべてのリソースにアクセスできます。CDN でバケット内の特定のリソースへのアクセスを制限することはできません。
署名の競合:OSS 認証の失敗を防ぐため、オリジンリクエストのヘッダーと URL パラメーターの両方に署名が含まれていないことを確認してください。
機能の競合:この機能は、OSS の静的 Web サイトホスティング機能のデフォルトページ設定と競合します。両方の機能を同時に使用するには、「関連ドキュメント」をご参照ください。
セキュリティに関する推奨事項
非公開バケットからのオリジンフェッチを有効にすると、オリジンデータは安全になります。ただし、POP にキャッシュされたリソースはデフォルトで公開アクセス可能です。CDN トラフィックの不正使用を防ぐため、CDN が提供する以下のセキュリティ機能を使用することを強く推奨します:
Referer ブラックリストまたはホワイトリストの設定:特定の Web サイトからのリクエストにのみ CDN リソースへのアクセスを制限します。
URL 署名の設定:リソース URL に動的署名と有効期限を設定して、悪意のあるダウンロードを効果的に防止します。
非公開 OSS バケットからのオリジンフェッチの無効化
高速化ドメイン名が非公開バケット内のリソースにアクセスする必要がなくなった場合は、RAM コンソールで権限を取り消します。この操作により、CDN が非公開 OSS バケットからオリジンフェッチを実行することを許可する権限が取り消されます。
CDN コンソールでこの機能を無効にできます。
CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけて [管理] をクリックします。
ドメイン名の左側のナビゲーションウィンドウで、Back-to-Origin 設定 をクリックします。
OSS 非公開バケットへのアクセス セクションで、OSS 非公開バケットへのアクセス スイッチをオフにします。
RAM コンソールで権限を完全に削除します。
RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 をクリックします。
[ロール名] リストで、AliyunCDNAccessingPrivateOSSRole ロールをクリックします。

AliyunCDNAccessingPrivateOSSRole ロールからすべての権限を削除します。
権限の [権限の取り消し] をクリックします。
表示される確認ダイアログボックスで、[権限の取り消し] をクリックします。
ページに戻り、AliyunCDNAccessingPrivateOSSRole ロールを削除します。
AliyunCDNAccessingPrivateOSSRole ロールの [ロールの削除] をクリックします。
[ロールの削除] 確認ダイアログボックスで、[ロールの削除] をクリックします。
ページに戻り、AliyunCDNAccessingPrivateOSSRolePolicy ポリシーを削除します。
AliyunCDNAccessingPrivateOSSRolePolicy の [ポリシーの削除] ボタンをクリックします。
[ポリシーの削除] 確認ダイアログボックスで、ポリシー名を入力し、[ポリシーの削除] をクリックします。
よくある質問
CDN が OSS リソースにアクセスする際に This request is forbidden by kms. エラーが発生した場合の解決方法
Key Management Service (KMS) を使用して OSS バケット内のデータを暗号化する場合、CDN オリジンフェッチロールに KMS キーを使用するための追加の権限を付与する必要があります。そうしないと、CDN はこれらのファイルを復号化またはアクセスできず、This request is forbidden by kms. エラーが返されます。
RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール名] リストで、AliyunCDNAccessingPrivateOSSRole ロールを見つけます。
[権限の付与] をクリックします。[プリンシパル] は自動的に入力されます。
[ポリシー] で、[システムポリシー] を選択します。AliyunKMSCryptoUserAccess を検索してクリックし、[選択されたポリシー] ボックスに追加します。
[権限の付与] をクリックします。操作が完了したことを示すメッセージが表示されます。
[閉じる] をクリックします。

[リソースの更新] 機能を使用します。更新タスクが完了したら、再度リソースへのアクセスを試みます。