POST Policy

認証有りでPOST Objectを実行するためには、POST Policyの設定が必要です。

POST PolicyはJSON形式で記述します。

POST ObjectリクエストのHTTPマルチパートフォームフィールドのPolicyにBase64エンコードしセットします。

POST Policyではリクエストで送信するフォームフィールドを指定します。この指定とリクエストが一致しないと認証は失敗します。値に対して制限をかけることもできます。

Warning

POST Policyの設定は任意です。POST Policyを設定しない場合、バケットに対する匿名での書込み権限を許可する必要があります。セキュリティの観点から、バケットの書込み権限を緩和するのではなく、POST Policyの利用を推奨します。

以下にサンプルを示します。

{ "expiration": "2007-12-01T12:00:00.000Z",
   "conditions": [
      {"bucket": "iij-policy"},
      ["starts-with", "$key", "upload/iij/"],
      {"acl": "public-read"},
      {"success_action_redirect": "http://iij-policy.dag-storage.iijgio.com/success.html"},
      ["starts-with", "Content-Type", "image/"],
      ["content-length-range","1" , "1024"],
      {"x-iijgio-meta-uuid": "14365123651274"},
      ["starts-with", "$x-iijgio-meta-tag", ""]
  ]
}

設定項目

expiration

本POST Policyの有効期限を設定します。値はW3Cが規定するISO 8601日付フォーマットに従います(http://www.w3.org/TR/NOTE-datetime)。本項目は必須です。

conditions

conditionsはJSONの配列で記述します。複数の条件を記載することができます。

値のマッチングの指定は、完全一致と前方一致があります。

マッチング対象にフォームフィールドの名前、もしくはbucketのように特定の値を示すキーを指定します。これらをまとめて「要素」として記載、説明します。

完全一致の場合、{“要素名”:”値”}の形式で指定します。このサンプルではバケット名がiij-policyと完全一致しなければリクエストはエラーになります。

{"bucket": "iij-policy"}

また、”eq”でも指定が可能です。このサンプルは上記サンプルと同じ意味を持ちます。

["eq", "$bucket", "iij-policy"]

前方一致の場合は、[“starts-with”,”$要素名”,”値”] の形式で記述します。このサンプルではオブジェクトのキーがuplad/iij/で始まらなければリクエストはエラーになります。この記法の場合、フォームフィールドのキー名は$付きで指定します。

["starts-with", "$key", "upload/iij/"]

要素の値を制限する必要が無い場合は、以下のように記述をします。

["starts-with", "$x-iijgio-meta-tag", ""]

content-length-rangeは記述方法が今まで説明してきた方法と異なります。[“content-length-ragne”,”最少値”,”最大値”]のように記載します。サンプルを以下に示します。

["content-length-range", "1" , "1024"]

指定可能な要素

acl
aclフォームフィールドで送信されるべきaclの設定値を指定します。完全一致、もしくはstart-withによる前方一致で指定ができます。
content-length-range
POST Objectで送信可能なオブジェクトのサイズを指定します。上限値と、下限値を設定します。
Cache-Control, Content-Type, Content-Disposition, Content-Encoding
REST特有のヘッダー。詳細は PUT Object をご覧ください。左記フィールドに指定可能な値を完全一致、もしくはstarts-withによる前方一致で指定ができます。
bucket
バケット名を指します。完全一致、もしくはstarts-withによる前方一致で指定ができます。
key
アップロードされたオブジェクトのキーを指します。完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-algorithm
署名バージョン4で使用される署名アルゴリズムを指します。値はIIJGIO4-HMAC-SHA256です。完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-credential
アクセスキーIDと、署名バージョン4での署名の計算に使用された日付、リージョン、サービスを含むスコープ情報を指します。
<your-access-key-id>/<date>/<iijgio-region>/<iijgio-service>/iijgio4_request
<date>値はYYYYMMDD フォーマットを使用して指定されます。
IIJGIO dagにリクエストを送信するときは、<iijgio-service>の値はdagとなります。
完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-date
署名バージョン4で使用されるリクエスト日付を指します。ISO8601 基本形式を使用し、 YYYYMMDD’T’HHMMSS’Z’ 形式で指定します。完全一致、もしくはstarts-withによる前方一致で指定ができます。
success_action_redirect,redirect
アップロード成功時にクライアントがリダイレクトされるURL。完全一致、もしくはstarts-withによる前方一致で指定ができます。
success_action_status
success_action_redirectが指定されていない場合、アップロード成功時にクライアントに返されるステータスコード。完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-meta-*
ユーザーメタデータを指します。内容の解釈は行われません。 完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-server-side-encryption-customer-algorithm
サーバサイド暗号化で暗号化に用いるアルゴリズムを指定するフィールドを指します。完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-server-side-encryption-customer-key
サーバサイド暗号化でオブジェクトの暗号化に用いる暗号化キーを指定するフィールドを指します。完全一致、もしくはstarts-withによる前方一致で指定ができます。
x-iijgio-server-side-encryption-customer-key-MD5
サーバサイド暗号化で暗号化キーのMD5(128bit)をセットするフィールドを指します。完全一致、もしくはstarts-withによる前方一致で指定ができます。

設定時の注意点

POST Objectで指定可能なフォームフィールドのうち、IIJGIOAccessKeyId、policy、signature、x-iijgio-signatureはPOST Policyに指定する必要はありません。

ページ先頭へ