プライベート Object Storage Service (OSS) バケットがオリジンサーバーである場合、Alibaba Cloud Content Delivery Network (CDN) に OSS バケットへのアクセス権限を付与し、プライベートバケットアクセス機能を有効にすることをお勧めします。この機能は、アクセス認証に使用したり、オリジンサーバーを不正アクセスから保護したりするために使用できます。このようにして、CDN はOSS 非公開バケット内のリソースの配信を高速化できます。
使用上の注意
この機能を初めて使用するときは、アカウント内のすべての OSS バケットに対する CDN の読み取り専用権限を付与する必要があります。デフォルトでは、この機能は一時的な Security Token Service (STS) トークンを使用して OSS バケットにアクセスします。PUT リクエストを使用して、この機能でオブジェクトを書き込んだり削除したりすることはできません。
永続的なセキュリティトークンを設定する場合は、トークンの申請時に、PUT リクエストを使用して OSS バケット内のオブジェクトを書き込んだり削除したりするためにトークンが使用されないように制限する必要があります。RAM ユーザーを使用して OSS にアクセスする方法については、「RAM ユーザーを使用して OSS にアクセスする」をご参照ください。
CDN に読み取り専用権限を付与し、高速化ドメイン名に対してプライベートバケットアクセス機能を有効にすると、高速化ドメイン名を使用してプライベートバケット内のすべてのリソースにアクセスできます。
重要OSS 非公開バケットに Web サイトの訪問者向けのコンテンツ以外のコンテンツが保存されている場合は、CDN 権限を付与したり、この機能を有効にしたりしないでください。
Web サイトが攻撃に対して脆弱な場合は、Anti-DDoS サービスを購入してください。
重要この場合、CDN 権限を付与したり、この機能を有効にしたりする場合は注意してください。
OSS 非公開バケットへのアクセスは、OSS でホストされている静的 Web サイトのデフォルトホームページの設定と競合します。両方の機能を有効にする場合は、「OSS 非公開バケットへのアクセスを有効にした後、高速化ドメイン名へのリクエストで「バケットを一覧表示することを禁止されています」というエラーメッセージが表示されるのはなぜですか。」をご参照ください。
プライベートバケットアクセス機能を有効にすると、ポイントオブプレゼンス (POP) はオリジンリクエストに Authorization ヘッダーを追加します。ヘッダーの値は、OSS 非公開バケットにアクセスするための認証署名です。OSS バケットからリソースを取得するオリジンリクエストには、Authorization ヘッダーと URL パラメーターの両方に署名を含めることはできません。そうしないと、OSS 認証が失敗します。
CDN が提供するホットリンク保護や URL 署名などの機能を使用して、リソースを不正アクセスから保護できます。詳細については、「Referer ホワイトリストまたはブラックリストを設定してホットリンク保護を有効にする」および「URL 署名の設定」をご参照ください。
OSS 非公開バケットへのアクセスを有効にする
CDN コンソールにログオンします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけて、[管理] をクリックします。
ドメイン名の左側のナビゲーションツリーで、Back-to-Origin 設定 をクリックします。
オプション。この機能を初めて使用するときに、この操作を実行します。プライベートバケットアクセス セクションで、権限付与 をクリックします。次に、[承認ポリシーの確認] をクリックします。
説明CDN コンソールを使用してOSS 非公開バケットに権限を付与できない場合は、RAM コンソールを使用して権限を付与できます。詳細については、「RAM コンソールを使用してOSS 非公開バケットに権限を付与する」をご参照ください。
プライベートバケットアクセス セクションで、プライベートバケットアクセス をオンにします。
説明CDN がOSS 非公開バケット内の暗号化されていないオブジェクトにアクセスすることを承認する場合にのみ、上記の手順を実行する必要があります。CDN が Key Management Service (KMS) を使用して暗号化された OSS オブジェクトにアクセスするようにするには、まず [aliyunkmscryptouseraccess] ポリシーを RAM ロール [aliyuncdnaccessingprivateossrole] にアタッチする必要があります。詳細については、「AliyunKMSCryptoUserAccess ポリシーを RAM ロール AliyunCDNAccessingPrivateOSSRole にアタッチする」をご参照ください。
表示される プライベートバケットアクセス ダイアログボックスで、タイプを選択し、[OK] をクリックします。
パラメーター
説明
タイプ
[同じアカウントのバケット]: システムは、STS によって発行されたセキュリティトークンを自動的に設定します。ただし、CDN は同じ Alibaba Cloud アカウント内のOSS 非公開バケットにのみアクセスできます。
[アカウント間または同じアカウントのバケット]: 永続的なセキュリティトークンを設定する必要があります。このようにして、CDN は同じ Alibaba Cloud アカウント内のOSS 非公開バケットからだけでなく、Alibaba Cloud アカウント間のOSS 非公開バケットからもコンテンツを取得できます。
AccessKey ID
OSS 非公開バケットが属する Alibaba Cloud アカウントの AccessKey ID。詳細については、「AccessKey ペアを作成する」をご参照ください。
AccessKey Secret
OSS 非公開バケットが属する Alibaba Cloud アカウントの AccessKey シークレット。
オプション。[aliyunkmscryptouseraccess] ポリシーを RAM ロール [aliyuncdnaccessingprivateossrole] にアタッチします。
RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、RAM ロール [aliyuncdnaccessingprivateossrole] を見つけます。
[権限の付与] をクリックします。[権限の付与] パネルの [プリンシパル] フィールドには、自動的に入力されます。
[ポリシー] セクションで、[システムポリシー] を選択し、検索ボックスに [aliyunkmscryptouseraccess] と入力して、[aliyunkmscryptouseraccess] 権限ポリシーを検索します。権限ポリシーをクリックして、[選択済みポリシー] リストに追加します。
[権限の付与] をクリックします。[完了] と表示されます。
[閉じる] をクリックします。
RAM コンソールを使用してOSS 非公開バケットに権限を付与するRAM コンソールを使用して非公開 OSS バケットに権限を付与する
CDN コンソールを使用してOSS 非公開バケットに権限を付与できない場合は、RAM コンソールを使用してOSS 非公開バケットに権限を付与できます。
RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[JSON] タブをクリックします。ポリシーエディターで、次のポリシーコンテンツを入力します。
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] }
[OK] をクリックします。[ポリシーの作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
[名前]: AliyunCDNAccessingPrivateOSSRolePolicy。
[説明]: RAM ロールにアタッチするポリシー。OSS バケットに対する読み取り専用権限を含みます。
左側のナビゲーションウィンドウで、[ID] > [ロール] を選択します。
[ロール] ページで、[ロールの作成] をクリックします。
[信頼できるエンティティの選択] セクションで、[alibaba Cloud アカウント] を選択し、[次へ] をクリックします。
[ロールの設定] ステップで、次の情報を入力します。
[RAM ロールの名前]: AliyunCDNAccessingPrivateOSSRole。
[注記]: デフォルトでは、CDN と DCDN はこのロールを使用してOSS 非公開バケットにアクセスします。
[信頼できる Alibaba Cloud アカウントを選択] セクションで、[現在の Alibaba Cloud アカウント] を選択し、[OK] をクリックします。
ロールを作成した後、[ロール] ページで [AliyunCDNAccessingPrivateOSSRole] をクリックします。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックし、次の情報を入力して、[信頼ポリシードキュメントの保存] をクリックします。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cdn.aliyuncs.com" ] } } ], "Version": "1" }
権限 タブで、[権限の付与] をクリックします。
[リソーススコープ] セクションで、[アカウント] を選択します。
[ポリシー] セクションで、[カスタムポリシー] を選択し、作成した AliyunCDNAccessingPrivateOSSRolePolicy ポリシーを選択して、[権限の付与] をクリックします。
オリジンフェッチCDN コンソールの Alibaba Cloud OSS プライベートバケットアクセス ページに移動します。ロールは 機能を使用する権限を持っていることがわかります。
OSS 非公開バケットの権限を取り消す
OSS 非公開バケットに対する CDN の権限を削除する場合は、RAM コンソールで対応するロールの権限を取り消すことができます。
RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[aliyuncdnaccessingprivateossrole] をクリックします。
ロール [aliyuncdnaccessingprivateossrole] からすべての権限を取り消します。
管理するポリシーを見つけて、[操作] 列の [権限の取り消し] をクリックします。
[権限の取り消し] メッセージで、[権限の取り消し] をクリックします。
を選択します。
[aliyuncdnaccessingprivateossrole] を見つけて、[操作] 列の [ロールの削除] をクリックします。
[ロールの削除] ダイアログボックスで、AliyunCDNAccessingPrivateOSSRole を入力し、[ロールの削除] をクリックします。
参照資料
CDN を使用して OSS バケットからのリソースの配信を高速化する方法については、「CDN を使用して OSS バケットからのリソースの配信を高速化する」をご参照ください。
プライベートバケットへのアクセスを有効にした後、CDN 高速化ドメイン名にアクセスすると、「バケットを一覧表示することを禁止されています」というエラーメッセージが表示される場合があります。エラーの修正方法については、「OSS 非公開バケットオリジンフェッチを有効にした後、Alibaba Cloud Content Delivery Network 高速化ドメイン名にアクセスすると、「バケットを一覧表示することを禁止されています」というエラーが表示される」をご参照ください。
プライベートバケットへのアクセスを有効にした後、CDN は、匿名アクセス以外の場合、デフォルトでプライベートバケットからコンテンツを取得するリクエストに署名情報を含めます。ただし、静的 Web サイトホスティングを使用して設定されたデフォルトホームページにアクセスするには、リクエストが匿名である必要があります。詳細については、「CDN を使用してプライベートバケットからオブジェクトを取得するときに、バケットのデフォルトホームページにアクセスできないのはなぜですか。」をご参照ください。