高速化ドメイン名のオリジンがプライベート Alibaba Cloud Object Storage Service (OSS) バケットである場合は、Alibaba Cloud OSS プライベートバケットアクセス機能を有効にすることを推奨します。これにより、アクセスを制御してトラフィックの盗用を防ぎ、CDN がプライベートバケットからリソースを高速化できるようになります。
仕組みと利点
-
仕組み:この機能を有効にすると、CDN または DCDN がプライベート OSS バケットにオリジンフェッチリクエストを送信する際に、リクエストヘッダーに
Authorizationフィールドが自動的に追加されます。このフィールドの値は、STS 一時トークンや AccessKey などの認可された ID 情報から生成された有効な署名です。OSS はこの署名を使用してリクエストを認証します。 -
安全なアクセス:CDN または DCDN に限定的な読み取り専用権限を付与することで、オリジンフェッチリクエストの正当性を確保し、プライベートバケットを公開することによるセキュリティリスクを回避します。
-
コストの最適化:エンドユーザーのリクエストは CDN キャッシュから提供されるため、OSS から直接提供するよりもコスト効率が高くなります。CDN または DCDN から OSS へのオリジンフェッチトラフィックは、より高価な OSS のアウトバウンドインターネットトラフィックとしてではなく、より安価な CDN オリジンフェッチトラフィックとして課金されます。これにより、全体的なコストが削減されます。詳細については、「CDN で高速化された OSS リソースの課金」をご参照ください。
操作手順
設定には 2 つのステップがあります。まず、アカウントに 1 回限りの権限を付与し、次に特定の高速化ドメイン名に対してこの機能を有効にします。
-
CDN または DCDN に OSS へのアクセスを権限付与します。アカウント内のドメイン名でこの機能を有効にする前に、CDN または DCDN に OSS へのアクセス権限を付与する必要があります。これは 1 回限りのアカウントレベルの操作です。権限付与を求められない場合は、次のステップに進んでください。
(推奨) ワンクリック認可
-
CDN コンソールにログインします。
-
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
-
ドメイン名 ページで、管理するドメイン名を見つけ、[操作] 列の 管理 をクリックします。
-
ドメイン名の設定ページの左側のナビゲーションウィンドウで、Back-to-Origin 設定 をクリックします。
-
OSS 非公開バケットへのアクセス セクションで、権限付与 をクリックします。表示される確認ダイアログボックスで、[権限付与] をクリックします。
[ロール権限] 行には、CDN サービスが OSS バケットへのアクセスを許可されていないことが示されます。[ステータス] スイッチはデフォルトでオフになっています。
(代替) RAM を使用した手動認可
-
左側のナビゲーションウィンドウで、[権限] > [ポリシー] の順に選択します。
-
[ポリシー] ページで、[ポリシーの作成] をクリックします。
-
[スクリプトエディター] タブで、次のポリシー内容を入力します。
-
OK をクリックします。[ポリシーの作成] ページで、次の情報を入力し、OK をクリックします。
-
ポリシー名:AliyunCDNAccessingPrivateOSSRolePolicy
-
備考:CDN または DCDN がプライベート OSS バケットからオリジンフェッチを実行できるようにするロールの権限付与ポリシーです。このポリシーは OSS への読み取り専用権限を付与します。
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] }左側のナビゲーションウィンドウで、[ID] > [ロール] の順に選択します。
-
[ロール] ページで、[ロールの作成] をクリックします。
-
[信頼できるプリンシパルタイプ] を [クラウドアカウント] に設定し、[信頼できるプリンシパル名] として [現在のクラウドアカウント] を選択して、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 または DCDN サービスと OSS バケットが同じ Alibaba Cloud アカウントに属する場合にこのオプションを使用します。システムは STS 一時トークンを使用して認証するため、設定が簡素化され、キー管理が不要になり、セキュリティが向上します。
STS 一時トークンを使用して、アカウント間のオリジンフェッチを行うこともできます。詳細については、「STS を使用して別のアカウントのプライベート OSS バケットにアクセスする」をご参照ください。
アカウント間または同一アカウント内のバケット
CDN または DCDN サービスと OSS バケットが異なる Alibaba Cloud アカウントに属する場合にこのオプションを使用します。このオプションは、同一アカウントのシナリオもサポートします。プライベート OSS バケットを所有するアカウントの AccessKey ID と AccessKey シークレットを提供する必要があります。詳細については、「AccessKey の作成」をご参照ください。
説明-
アクセス範囲:この機能を有効にすると、高速化ドメイン名はオリジンのプライベートバケット内のすべてのリソースにアクセスできます。CDN または DCDN を使用して、バケット内の特定のリソースへのアクセスを制限することはできません。
-
署名の競合:OSS の認証失敗を防ぐため、オリジンフェッチリクエストにリクエストヘッダーと URL パラメーターの両方に署名が含まれていないことを確認してください。
-
機能の競合:この機能は、OSS の静的 Web サイトホスティング機能のデフォルトのインデックスページ設定と競合します。両方の機能を同時に使用する必要がある場合は、「関連ドキュメント」をご参照ください。
-
-
セキュリティに関する推奨事項
プライベートバケットからのオリジンフェッチを有効にすると、オリジンデータは安全になります。ただし、CDN POP にキャッシュされたリソースは、デフォルトでパブリックアクセス可能です。トラフィックの盗用を防ぐには、CDN または DCDN の追加のセキュリティ機能を使用してください。
-
Referer ブラックリストまたはホワイトリストの設定:特定の Web サイトからのリクエストに CDN リソースへのアクセスを制限します。
-
URL 署名の設定:リソース URL に動的な署名と有効期限を設定して、悪意のあるダウンロードを効果的に防止します。
プライベート OSS バケットのオリジンフェッチの無効化
高速化ドメイン名がプライベートバケット内のリソースにアクセスする必要がなくなった場合は、Resource Access Management (RAM) コンソールに移動して、対応するロールの権限を取り消すことができます。これにより、CDN がプライベート OSS バケットにアクセスすることを許可する権限が取り消されます。
-
CDN コンソールで機能を無効にします。
-
CDN コンソールにログインします。
-
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
-
ドメイン名 ページで、管理するドメイン名を見つけ、[操作] 列の 管理 をクリックします。
-
左側のナビゲーションウィンドウで、Back-to-Origin 設定 をクリックします。
-
OSS 非公開バケットへのアクセス セクションで、OSS 非公開バケットへのアクセス スイッチをオフにします。
-
-
RAM コンソールで権限を完全に削除します。
-
RAM コンソールにログインします。
-
左側のナビゲーションウィンドウで、を選択します。
-
[ロール名] リストで、AliyunCDNAccessingPrivateOSSRole ロールをクリックします。
ロールの詳細ページで、[権限] タブに移動します。権限が付与されたシステムポリシーを表示できます。これには、「CDN/DCDN がプライベート OSS バケットからオリジンフェッチを実行し、OSS への読み取り専用権限を付与するロールの権限付与ポリシー」という備考があります。リソース範囲はアカウントレベルです。[操作] 列には [権限の取り消し] リンクがあり、ページの右上隅に [ロールの削除] ボタンがあります。
-
AliyunCDNAccessingPrivateOSSRole ロールからすべての権限を削除します。
-
ポリシーの [権限の取り消し] をクリックします。
-
表示される確認ダイアログボックスで、[権限の取り消し] をクリックします。
-
-
ページに戻り、AliyunCDNAccessingPrivateOSSRole ロールを削除します。
-
AliyunCDNAccessingPrivateOSSRole ロールを見つけ、[操作] 列の [ロールの削除] をクリックします。
-
[ロールの削除] 確認ダイアログボックスで、[ロールの削除] をクリックします。
-
-
ページに戻り、AliyunCDNAccessingPrivateOSSRolePolicy ポリシーを削除します。
-
AliyunCDNAccessingPrivateOSSRolePolicy ポリシーを見つけ、[操作] 列の [ポリシーの削除] をクリックします。
-
[ポリシーの削除] 確認ダイアログボックスで、ポリシー名を入力し、[ポリシーの削除] をクリックします。
-
-
よくある質問
CDN または DCDN が OSS リソースにアクセスする際の This request is forbidden by kms. エラーを解決するにはどうすればよいですか?
OSS バケットが Key Management Service (KMS) で暗号化されている場合、AliyunCDNAccessingPrivateOSSRole ロールに KMS キーを使用する権限を付与する必要があります。この権限を付与しない場合、CDN または DCDN はファイルを復号してアクセスできなくなり、This request is forbidden by kms. というエラーが発生します。この問題を解決するには、当該ロールに必要な KMS 権限を付与してください。
-
RAM コンソールにログインします。
-
左側のナビゲーションウィンドウで、を選択します。
-
[ロール名] リストで、AliyunCDNAccessingPrivateOSSRole ロールを見つけてクリックします。
-
[権限の追加] をクリックします。[プリンシパル] は自動的に入力されます。
-
[ポリシー] で [システムポリシー] を選択し、AliyunKMSCryptoUserAccess を検索してクリックし、[選択したポリシー] ボックスに追加します。
-
[新しい権限の確認] をクリックします。操作が [完了] したことを示すメッセージが表示されます。
-
無効 をクリックします。
-
更新/プリフェッチ機能を使用してキャッシュをクリアします。更新タスクが完了したら、再度リソースへのアクセスを試みてください。