Amazon S3の署名バージョンについて

0

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

サーバーアクセスログ取得で、署名バージョンを確認したところ署名バージョンの箇所で「-」と記載されていました。
調べたところ、署名バージョンの箇所での「-」は認証されていないリクエストの場合に表示されるとのことでした。https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/LogFormat.html
こちらも2019年6月23日以降、署名バージョン2と同様にs3へのリスクエストが失敗し、使用できなくなってしまうのでしょうか。

処理は下記の通りです。
サーバが返した情報($resultArray)をそのまま使ってFormDataを作り、ajaxでPOST通信しております。

$params = array(
'access_key' => AWSAccessKeyId,
'secret_key' => AWSSecretAccessKey,
'bucket_name' => バケット名,
'region' => リージョン名,
'allowed_file_size' => $maxSize, // eg: 1073741824 (1 GB)
);

    $dates = array(  
       'short'  => gmdate('Ymd'),  
       'iso'    => gmdate('Ymd\THis\Z'),  
       'expiry' => 3600,  
    );  
      
    // ポリシー作成  
    $policy = base64_encode(json_encode(array(  
         'expiration' => gmdate('Y-m-d\TG:i:s\Z', strtotime(300)),  
         'conditions' => array(  
                               array('bucket' => $params\['bucket_name']),  
                               array('starts-with', '$key', $imageDir.'/'),  
                               array('starts-with', '$Content-Type', ''),  
                               array('success_action_status' => $status),  
                               array('x-amz-credential' => implode('/', array($params\['access_key'], $dates\['short']  , $params\['region'], 's3', 'aws4_request'))),  
                               array('x-amz-algorithm' => 'AWS4-HMAC-SHA256'),  
                               array('content-length-range', 0, $params\['allowed_file_size']),  
                               array('x-amz-date' => $dates\['iso']),  
                               array('x-amz-expires' => '' . $dates\['expiry'] . ''),  
                          ),  
    )));  
      
    //署名計算        
    $signature = hash_hmac('sha256', $dates\['short'], 'AWS4' . $params\['secret_key'], true);  
    $signature = hash_hmac('sha256', $params\['region'], $signature, true);  
    $signature = hash_hmac('sha256', 's3', $signature, true);  
    $signature = hash_hmac('sha256', 'aws4_request', $signature, true);  
    $signature = hash_hmac('sha256', $policy, $signature);  
      
    //リクエストに追加する  
    $resultArray =  array(  
            'url' => 'https://' . $params\['bucket_name'] . '.s3-'. $params\['region'] .'.amazonaws.com/',  
            'form' => array (  
                    'key' => $imageDir."/".$imageFileName,  
                    'success_action_status' => '200',  
                    'policy' => $policy,  
                    'Content-Type' => '',  
                    'x-amz-algorithm' => 'AWS4-HMAC-SHA256',  
                    'x-amz-credential' => implode('/', array($params\['access_key'], $dates\['short'], $params\['region'], 's3', 'aws4_request')),  
                    'x-amz-date' => $dates\['iso'],  
                    'X-amz-expires' => $dates\['expiry'],  
                    'X-amz-signature' => $signature  
            )  
   );  
   return $resultArray;
ncd-aws
posta 5 anni fa320 visualizzazioni
2 Risposte
0

SDK の実装を参考にするのが一番良いかもしれません。

https://github.com/aws/aws-sdk-php/blob/master/src/Signature/SignatureV4.php#L137

サーバが返した情報($resultArray)をそのまま使って

X-Amz-SignedHeaders は別途指定しているのでしょうか。

semnil
con risposta 5 anni fa
0

ご回答いただきまして、ありがとうございました。

下記の記事にありますように、仕様が変更になり、2020年6月までに作成された
バケットについてはSigV2 署名付きリクエストがサポートされるようなので、
この質問については完了とさせて頂きます。
https://aws.amazon.com/jp/blogs/news/amazon-s3-update-sigv2-deprecation-period-extended-modified/

ncd-aws
con risposta 5 anni fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande