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 policy(SOP)は、ブラウザベースのスクリプトに適用されるセキュリティの概念と制限です。このポリシーでは、Webページから最初にロードされたスクリプトが、両方のページが同じオリジンにある限り、別のページのデータにアクセスできます。この制限により、悪意のあるスクリプトが別のオリジンのページ内のデータにアクセスするのを防ぐことができます。
CORSにはいくつかの一般的なユースケースがあります。ほとんどの場合、AJAXリクエスト、フォント、スタイルシート、スクリプトのロード、クロスドメイン認証など、クロスドメインアクセスの明確に定義されたインスタンスが関係します。CORSは、シングルページアプリケーション(SPA)の一部として実装することもできます。
CORSは、HTTP要求および応答に挿入されるヘッダーを使用して実装されます。たとえば、アクセス制御を実装し、メソッドやヘッダーなど、許可される操作を示す応答ヘッダーがいくつかあります。HTTP要求に_Origin_headerがあると、クロスドメイン要求として定義されます。オリジン値は、CORSサーバーが有効なCORS設定を見つけるために使用されます。
これは、特定のメソッドやヘッダーなど、サーバがCORSをサポートしているかどうかを最初に確認するためのオプションの要求です。応答に基づいて、CORS要求を完了することも、完了しないこともできます。
バケットは、明確に定義されたネームスペースに基づいて格納およびアクセスされるオブジェクトのコンテナです。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ルールの定義
この機能をアクティブ化して使用するには、ONTAPでCORSルールを定義する必要があります。
設定アクション
ONTAPでは、次の3つの主要な設定ルールアクションがサポートされています。
-
- 表示
-
作成
-
削除
ONTAPで定義されているCORSルールには、SVMとバケット、許可されているオリジン、メソッド、ヘッダーなど、いくつかのプロパティがあります。
管理オプション
ONTAPクラスタでCORSを管理する場合は、いくつかのオプションを使用できます。
CORSは、コマンドラインインターフェイスを使用して設定できます。詳細については、を参照してください CLIを使用したCORSの管理 。
ONTAP REST APIを使用してCORSを設定できます。CORS機能をサポートする新しいエンドポイントは追加されていません。代わりに、次の既存のエンドポイントを使用できます。
/api/protocols/s3/services/{svm.uuid}/buckets/{bucket.uuid}
詳細については、ドキュメントサイトを参照して "ONTAP の自動化"ください。
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
。
ルールの作成に使用するパラメータを次に示します。
パラメータ | 説明 |
---|---|
|
ルールを作成するオブジェクトストアサーババケットをホストするSVM(SVM)の名前を指定します。 |
|
ルールを作成するオブジェクトストアサーバのバケットの名前。 |
|
ルールを作成するオブジェクトストアサーババケットのインデックスを指定するオプションのパラメータ。 |
|
オブジェクトストアサーババケットルールの一意の識別子。 |
|
クロスオリジンリクエストの発信元を許可するオリジンのリスト。 |
|
クロスオリジン要求で許可されるHTTPメソッドのリスト。 |
|
クロスオリジン要求で許可されるHTTPメソッドのリスト。 |
|
お客様がアプリケーションからアクセスできるCORS応答で送信される追加ヘッダーのリスト。 |
|
ブラウザが特定のリソースのプリフライトレスポンスをキャッシュする時間を指定するオプションのパラメータ。 |
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つのステップで実行されます。
-
コマンドを実行し `show`てルールを表示し、そのインデックスを取得します。
-
インデックス値を使用してDELETEを発行します。
vserver object-store-server bucket cors-rule delete -vserver vs1 -bucket bucket1 -index 1
変更
既存のCORSルールを変更するCLIコマンドはありません。ルールを変更するには、次の手順を実行する必要があります。
-
既存のルールを削除します。
-
必要なオプションを指定して新しいルールを作成します。