Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Cross-Origin Resource Sharing(CORS)とONTAPの統合

共同作成者

ONTAP 9 .16.1以降では、Cross-Origin Resource Sharing(CORS)を設定して、異なるドメインのクライアントWebアプリケーションがONTAPバケットにアクセスできるようにすることができます。これにより、Webブラウザを使用してバケットオブジェクトにセキュアにアクセスできるようになります。

CORSはHTTP上に構築されたフレームワークで、1つのWebページで定義されたスクリプトが別のドメインのサーバのリソースにアクセスできるようにします。このフレームワークは、ウェブセキュリティの初期の基盤である_same-origin policy_を安全にバイパスするために使用されます。主な概念と用語については、以下で説明します。

由来

原点は、リソースの場所とIDを正確に定義します。次の値の組み合わせで表されます。

  • URIスキーム(プロトコル)

  • ホスト名(ドメイン名またはIPアドレス)

  • ポート番号

ここに起源の簡単な例があります。 `https://www.mycompany.com:8001`オリジンがCORSとともに使用される場合、要求を行っているクライアントを識別します。

same-originポリシー

same-origin policy(SOP)は、ブラウザベースのスクリプトに適用されるセキュリティの概念と制限です。このポリシーでは、Webページから最初にロードされたスクリプトが、両方のページが同じオリジンにある限り、別のページのデータにアクセスできます。この制限により、悪意のあるスクリプトが別のオリジンのページ内のデータにアクセスするのを防ぐことができます。

一般的なCORSのユースケース

CORSにはいくつかの一般的なユースケースがあります。ほとんどの場合、AJAXリクエスト、フォント、スタイルシート、スクリプトのロード、クロスドメイン認証など、クロスドメインアクセスの明確に定義されたインスタンスが関係します。CORSは、シングルページアプリケーション(SPA)の一部として実装することもできます。

HTTPヘッダー

CORSは、HTTP要求および応答に挿入されるヘッダーを使用して実装されます。たとえば、アクセス制御を実装し、メソッドやヘッダーなど、許可される操作を示す応答ヘッダーがいくつかあります。HTTP要求に_Origin_headerがあると、クロスドメイン要求として定義されます。オリジン値は、CORSサーバーが有効なCORS設定を見つけるために使用されます。

HTTPプリフライト要求

これは、特定のメソッドやヘッダーなど、サーバがCORSをサポートしているかどうかを最初に確認するためのオプションの要求です。応答に基づいて、CORS要求を完了することも、完了しないこともできます。

ONTAPハケツト

バケットは、明確に定義されたネームスペースに基づいて格納およびアクセスされるオブジェクトのコンテナです。ONTAPバケットには次の2種類があります。

  • NASおよびS3プロトコルでアクセス可能なNASバケット

  • S3プロトコルでのみアクセス可能なS3バケット

ONTAPでのCORSの実装

CORSは、ONTAP 9 .16.1以降のリリースではデフォルトで有効になっています。CORSは、アクティブにするSVMごとに設定する必要があります。

メモ ONTAPクラスタでCORSを無効にする管理オプションはありません。ただし、ルールを定義しないか、既存のルールをすべて削除することで、効果的に無効にすることができます。

想定されるユースケース

ONTAP CORSの実装では、クロスドメインリソースアクセスのために、次のようないくつかのトポロジが可能になります。

  • ONTAP S3バケット(同一または異なるSVMまたはクラスタ内)

  • ONTAP NASバケット(同一または異なるSVMまたはクラスタ内)

  • ONTAP S3バケットとNASバケット(同一または異なるSVMまたはクラスタ内)

  • ONTAPバケットと外部ベンダーバケット

  • 異なるタイムゾーンのバケット

概要

次の図は、CORSによってONTAP S3バケットへのアクセスを有効にする方法の概要を示しています。

CORSヲシヨウシタS3ハケツトヘノアクセス

CORSルールの定義

この機能をアクティブ化して使用するには、ONTAPでCORSルールを定義する必要があります。

設定アクション

ONTAPでは、次の3つの主要な設定ルールアクションがサポートされています。

  • - 表示

  • 作成

  • 削除

ONTAPで定義されているCORSルールには、SVMとバケット、許可されているオリジン、メソッド、ヘッダーなど、いくつかのプロパティがあります。

管理オプション

ONTAPクラスタでCORSを管理する場合は、いくつかのオプションを使用できます。

ONTAPコマンドラインインターフェイス

CORSは、コマンドラインインターフェイスを使用して設定できます。詳細については、を参照してください CLIを使用したCORSの管理

ONTAP REST API

ONTAP REST APIを使用してCORSを設定できます。CORS機能をサポートする新しいエンドポイントは追加されていません。代わりに、次の既存のエンドポイントを使用できます。

/api/protocols/s3/services/{svm.uuid}/buckets/{bucket.uuid}

詳細については、ドキュメントサイトを参照して "ONTAP の自動化"ください。

S3 API

S3 APIを使用して、ONTAPバケットのCORS設定を作成および削除できます。S3クライアント管理者には、次のような十分なPrivilegesが必要です。

  • アクセスキーまたはシークレットキーのクレデンシャル

  • s3api経由のアクセスを許可するようにバケットに設定されたポリシー

アップグレードとリバート

CORSを使用してONTAP S3バケットにアクセスする場合は、いくつかの管理上の問題に注意する必要があります。

アップグレード

CORS機能は、すべてのノードを9.16.1にアップグレードするとサポートされます。混在モードのクラスタでは、この機能は有効なクラスタバージョン(ECV)が9.16.1以降の場合にのみ使用できます。

リバート

ユーザ側では、クラスタのリバートを続行する前に、すべてのCORS設定を削除する必要があります。内部的には、すべてのCORSデータベースが削除されます。これらのデータ構造をクリアして元に戻すコマンドを実行するように求められます。

CLIを使用したCORSの管理

ONTAP CLIを使用してCORSルールを管理できます。主な操作は以下のとおりです。CORSコマンドを発行するには、ONTAP * admin *権限レベルである必要があります。

作成

コマンドを使用して、CORSルールを定義できます vserver object-store-server bucket cors-rule create

パラメータ

ルールの作成に使用するパラメータを次に示します。

パラメータ 説明

vserver

ルールを作成するオブジェクトストアサーババケットをホストするSVM(SVM)の名前を指定します。

bucket

ルールを作成するオブジェクトストアサーバのバケットの名前。

index

ルールを作成するオブジェクトストアサーババケットのインデックスを指定するオプションのパラメータ。

rule id

オブジェクトストアサーババケットルールの一意の識別子。

allowed-origins

クロスオリジンリクエストの発信元を許可するオリジンのリスト。

allowed-methods

クロスオリジン要求で許可されるHTTPメソッドのリスト。

allowed-headers

クロスオリジン要求で許可されるHTTPメソッドのリスト。

expose-headers

お客様がアプリケーションからアクセスできるCORS応答で送信される追加ヘッダーのリスト。

max-age-in-seconds

ブラウザが特定のリソースのプリフライトレスポンスをキャッシュする時間を指定するオプションのパラメータ。

vserver object-store-server bucket cors-rule create -vserver vs1 -bucket bucket1 -allowed-origins www.myexample.com -allowed-methods GET,DELETE

- 表示

コマンドを使用すると、現在のルールとその内容のリストを表示できます vserver object-store-server bucket cors-rule show

メモ パラメータを含める `-instance`と、各ルールに表示されるデータが展開されます。必要なフィールドを指定することもできます。
server object-store-server bucket cors-rule show -instance

削除

CORSルールのインスタンスを削除するには、deleteコマンドを使用します。ルールの値が必要な `index`ため、この操作は次の2つのステップで実行されます。

  1. コマンドを実行し `show`てルールを表示し、そのインデックスを取得します。

  2. インデックス値を使用してDELETEを発行します。

vserver object-store-server bucket cors-rule delete -vserver vs1 -bucket bucket1 -index 1

変更

既存のCORSルールを変更するCLIコマンドはありません。ルールを変更するには、次の手順を実行する必要があります。

  1. 既存のルールを削除します。

  2. 必要なオプションを指定して新しいルールを作成します。