Amazon S3の署名バージョンの廃止に伴う改修について

0

お世話になっております。

下記の通り、Amazon S3で署名バージョン2が2019年6月23日に使用できなくなる件の改修方法について
質問させていただきます。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation

現在業務では、AWSPHPSDKv2 を使用しており、バージョンアップは難しいため、
PHP SDK v2 用の Amazon S3 サービスクライアントを構築する場合は、signature パラメータを v4 に設定する設定を取り入れようとしております。

ただ、サーバ側からではなく、クライアント側から直接下記のようにS3へファイルをアップロードする処理があります。
1.画面から対象のZIPファイルを選択し、選択されたZIPファイルの情報をサーバに送る
2.サーバがクライアントの認証及びS3へアクセスするためのトークンを発行する
3.サーバからもらったポリシーとシグニチャと一緒に選択されたZIPファイルをS3に送る

上記の処理のうち、2でS3へアクセスするためのトークンを発行しているのですが、
署名バージョンを指定する設定が既存の処理に既に組み込まれており、署名バージョン4を明記する
ためにどこを改修を行えばよいかがわかりません。
下記にトークン作成処理を記述します。

$expiration = gmdate ( "Y-m-d\TH:i:s\Z", strtotime ( 20 ) ); // Policy Limit
$acl = 'private'; // set acl (private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control)
$status = '200'; // return this status code when upload success.
$maxSize = 1024;

    $policy = <<<EOS  
{  
    "expiration": "$expiration",  
    "conditions": \[  
        {"bucket": "接続先バケット名"},  
        \["starts-with", "\$key", "$imageDir/"],  
        {"acl": "$acl"},  
        {"success_action_status": "$status"},  
        \["starts-with", "\$Content-Type", ""],  
        \["content-length-range", 0, $maxSize]  
    ]  
}  

EOS;

$signature = hash_hmac ( "sha1", base64_encode ( $policy ), AWSセレクトキー, true );←ここで署名を作成している

    $resultArray =  array(  
            'url' => 'https://' . 接続先バケット名 . '.s3.amazonaws.com/',  
            'form' => array (  
                    'key' => ファイルディレクトリパス,  
                    'AWSAccessKeyId' => AWSキー,  
                    'acl' => $acl,  
                    'success_action_status' => $status,  
                    'policy' => base64_encode ( $policy ),  
                    'signature' => base64_encode ( $signature ),  
                    'Content-Type' => 'application/zip'  
            )  

   );  

署名バージョン4を使用するように明記するにはどのように設定すればよいのか、アドバイスの程お願いいたします。

参考URL:https://qiita.com/supertaihei02/items/a4f663d837e51f2f72b0

ncd-aws
gefragt vor 5 Jahren231 Aufrufe
2 Antworten
0

直接の回答にはなりませんが、具体的な実装例は以下が参考になると思います。

https://docs.aws.amazon.com/ja_jp/general/latest/gr/signature-v4-examples.html

semnil
beantwortet vor 5 Jahren
0

ご回答いただきまして、ありがとうございました。
こちらを参考にして、解決致しました。

ncd-aws
beantwortet vor 5 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen