Akamai Diversity

Akamai Japan ブログ

S3バケットへの認証ヘッダー使ったアクセス

署名バージョン4による認証ヘッダーを付ける

Akamai Solutions Engineer の Yuhki です。

Akamai Edge Server上で、エンドユーザーから受け取ったHTTPリクエストに、AWSのアクセスキー(Access Key IDとSecret Access Key)を使用して生成した署名(署名バージョン4)を付けS3に送信する事が可能です。以前は Advanced実装 (Akamaiのサービスに依頼して頂く必用のある実装) 扱いでしたが、現在は Property の Behavior を使用してユーザーが設定する事が可能です。(この機能が標準のBehaviorとして提供されているのは、この記事作製時点で Download Delivery 等の Media系製品のみになります)

署名されていない一般ユーザーによるS3へのアクセスを防ぐ事ができますので、Akamai を通さない S3へのアクセスを許可したくない場合等に使用できます。また、AWSのアクセスキーを使うため、S3バケットに対する細かなアクセス制御を行う事も可能になります。

s3akamai.png
Akamai のProperty の設定

この手順の中では具体的な設定に触れていませんが、ユーザー→アカマイ Edge Server → S3(オリジン)への通信は HTTPS 通信ができている事を前提にしています。
HTTP ヘッダーに署名情報を含んだ通信をするため、HTTPS 通信で保護する事が望ましいと思います。

アカマイのプロパティの設定で変更が必要な、Behavior (動作)の設定箇所は2箇所あります。

  • Behavior 「オリジンの特性」の設定

以下のように必用な情報を埋めていきます。キー等の値はサンプル例です。
behavior1.png

※例で使われているkey等の値は実際の値を少し改変したダミーの値ですので、この値をそのまま入力しても動作しません。
  • Behavior「オリジンサーバー」の設定

オリジンサーバー名の部分は S3 EndPoint 名になります。

behavior2.png

AWSのCLI以外で認証ヘッダーを使う場合、自分で認証ヘッダーに付ける値を計算する必要がありますが、Akamaiのプロパティに設定を入力するだけで、Akamai 側で認証ヘッダーの値の計算をし、Akamai Edge からS3へのアクセス時にヘッダーに付加されるようになります。

また、S3では RFCではURIでの使用が許可されてない文字を、S3のパスやファイル名として使用する事ができているケースがあるようです。その場合は、認証ヘッダーを使ったアクセスがうまく行かない場合がありますので、パス名の変更をご検討下さい。

Leave a comment