MENU
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
AWSの構築・クラウド運用を総合支援【CapsuleCloud】
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
AWSの構築・クラウド運用を総合支援【CapsuleCloud】
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
  1. ホーム
  2. AWS
  3. Amazon S3で署名付きURLを使ったアクセス制御

Amazon S3で署名付きURLを使ったアクセス制御

2022 8/09
AWS
2022年8月9日
目次

はじめに

S3(AWS Simple Storage Service)では、単純なアップロードやダウンロードだけでなく、アクセス権限の制御やバージョニングなど、様々な機能が提供されています。
そこで今回は、タイトルの通りS3で署名付きURLを作成してみたいと思います。

署名付きURLとは?

S3ではアクセスのポリシーをパブリックに設定したり、IAM(Identity and Access Management)ユーザ単位での細かなアクセス制御を行うことができます。
署名付きURLはその一環として、有効期限を設定し、ある特定のURLからのみアクセスができるようにするための機能です。
これを利用することで、通常はプライベートに設定しポリシーを緩めることなく、一時的に他のユーザへファイルを共有したりすることが可能になります。

ユーザ単位のアクセス制御ではないため、有効期限内であれば誰でもそのURLからアクセスできるという点には注意が必要です。

署名付きURLの生成

それでは、早速試していきましょう。
まずは適当なバケットを作成し、ファイルをアップロードしておきます。
このとき、パブリックアクセスを許可しないよう注意してください。

アップロードしたファイルのリンクにアクセスすると、当然アクセスは拒否されます。

署名付きURLを使ってこのファイルにアクセスできるようにするのが目標です。
今回はruby-sdkを使い、コマンドラインで署名付きURLを生成してみます。

準備

以下のようなコードを用意します。
認証情報とバケット名、ファイル名等は適宜変更してください。

[code language="ruby"]
require 'aws-sdk'

resource = Aws::S3::Resource.new(
:region => 'ap-northeast-1', # 東京以外のリージョンの場合は適宜変更してください
:access_key_id => '<your access key>',
:secret_access_key => '<your secret access key>'
)
object = resource.bucket('<your bucket name>').object('<your file name>')
puts url = URI.parse(object.presigned_url(:get, expires_in: 60)) # 有効期限を1分から変更する場合は適宜変更してください。
[/code]

実行

適当な名前で保存し、コマンドラインで実行すると…。

$ ruby test.rb
https://20170605-presigned-url-test.s3-ap-northeast-1.amazonaws.com/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIAJFM6SK4BF5JJH2BA%2F20170605%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20170605T101951Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Signature=5c90a7378e91c618d9dbeabf0dcf3b65fe78a893c070076275944c8aa25f05d8

このように、署名付きURLが生成されました。

動作確認

有効期限を1分に設定しているので、すぐにアクセスしてみましょう。

ちゃんと表示されましたね。
自分の環境では文字化けしてしまったので、ブラウザのエンコードをUTF-8に変更しました。

有効期限が切れるかどうかも確認しておきましょう。
少し待ってから再度アクセスしてみます。

有効期限切れとなり、アクセスができなくなっています。
このように、簡単にS3で署名付きURLを生成することができました。

おわりに

有効期限付きのダウンロードURLという、自前で実装するとなるとなかなか骨が折れそうな機能がいとも簡単に実現できました。
少し応用してIP制限と組み合わせれば、特定のユーザのみアクセス可能な有効期限付きURLを生成する…なんてこともできます。

ちょっとした機能ではありますが、知っておくと実装の幅が広がりますね。

AWS
aws s3

関連記事

  • aws-route53
    AWS機能を網羅してみよう3.3 Route53編「実践」DNSフェイルオーバー
  • AWSのクラウドセキュリティ「責任共有モデル」とは?
  • ansible
    AWSのためのAnsible入門
  • aws-s3
    Amazon S3でGlacierを活用したコスト削減法
  • aws-route53
    AWS機能を網羅してみよう3.2 Route53編「実践」
  • aws-route53
    AWS機能を網羅してみよう3.1 Route53編「概要」
  • aws-waf
    AWS WAFでSQLインジェクションと特定URLをブロック
  • aws-vpc
    AWSネットワーク設計 VPC概論
人気記事
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
  • terraform
    Terraformと変数(variable)のお話
新着記事
  • 10分でスタート!AWSの利用開始までを解説
  • WordPress脆弱性の原因とやっておくべき7つの対策
  • WordPress高速化!6つの簡単な方法で重さを改善
  • 高速WordPressサーバ『翔』
  • 【実例20選】AWS導入企業、活用事例をご紹介
カテゴリー
  • AWS
  • AWS導入支援
  • Rancher
  • Terraform
  • WordPress
アーカイブ
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
開発案件多数! フリーランス・エンジニアの求人はテックブレイン

スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。

スーパーソフトウエアはRancherパートナーネットワークのコンサルティングパートナーです。

logo

カプセルクラウドはAWSクラウドのマネージドサービスです。AWSを安心かつ迅速に導入し、負荷分散・セキュリティ・DevOps・コスト削減など、クラウドサービスのメリットを活かした豊富なベストプラクティスをご提供いたします。

Contents

  • サービス
  • 導入支援
  • WordPress
  • 導入事例
  • ブログ
  • Q&A
  • お問い合せ

お問い合わせ

株式会社スーパーソフトウエア
東京 03-6721-7105
大阪 06-4707-6001
info-capsulecloud@tokyo.supersoftware.co.jp

  • プライバシーポリシー
  • 免責事項
  • 契約約款
  • 特商法に基づく表記
  • 会社情報
  • サイトマップ

© Supersoftware 2017. All rights reserved.

目次