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に指定する必要はありません。