Storage Browser for Amazon S3 でダウンロードを無効にする

こんにちは、広野です。

以下の記事で、Storage Browser for Amazon S3 の実装方法を紹介しました。

しかしながら、このままではセキュリティがザルなので、実用的ではありません。本記事では、少々セキュリティ設定を組み込んでみたのでその方法を紹介します。

追加した設定

  • ダウンロード禁止
    ダウンロードフリーのままだと情報漏洩の温床となりそうだったので、ダウンロード不可にします。
  • Amazon S3 のアクセスログ取得
    設計上、Amazon Cognito のユーザーで認証しています。ですので、Amazon Cognito ユーザー名を含めたログを残します。
Amazon Cognito ユーザー名を含む Amazon S3 アクセスログの保管方法については今時点方法がわからなかったので、わかり次第記事にしたいと思います。

ダウンロード禁止

これは簡単でした。以下 2 点を実装しました。

Amazon Cognito ID プールが一時的に割り当てる IAM ロール内に定義していたアクセス権限から、”s3:GetItem” をはく奪しました。

- Action:
    - "s3:ListBucket"
  Resource:
    - !Sub "arn:aws:s3:::xxxx-scsk-kbdatasource"
  Effect: Allow
- Action:
    - "s3:DeleteObject"
#   - "s3:GetObject"  この行を削除 (YAMLですみません、AWS CloudFormation でデプロイしているので)
    - "s3:PutObject"
  Resource:
    - !Sub "arn:aws:s3:::xxxx-scsk-kbdatasource/*"

これだけでもダウンロード禁止は機能しますが、ダウンロードしようとするとエラーメッセージが表示されてしまうので、Storage Browser の画面からもダウンロードボタンを消しました。アプリコード内 (App.jsx) で get の部分を削除します。

  • 変更前
paths: {
  "bot1/*": {
    authenticated: ["write", "get", "list", "delete"]
  },
  "bot2/*": {
    authenticated: ["write", "get", "list", "delete"]
  }
  • 変更後
paths: {
  "bot1/*": {
    authenticated: ["write", "list", "delete"]
  },
  "bot2/*": {
    authenticated: ["write", "list", "delete"]
  }

そうすると、画面からダウンロードボタンがなくなりました。

まとめ

いかがでしたでしょうか?

小ネタでしたが、ニーズあると思って記事にしました。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWS サーバーレスアーキテクチャを駆使して社内クラウド人材育成アプリとコンテンツづくりに勤しんでいます。React で SPA を書き始めたら快適すぎて、他の言語には戻れなくなりました。サーバーレス & React 仲間を増やしたいです。AWSは好きですが、それよりもフロントエンド開発の方が好きでして、バックエンド構築を簡単にしてくれたAWSには感謝の気持ちの方が強いです。
取得資格:AWS 認定は13資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2024 Japan AWS Top Engineer 受賞
2022 - 2024 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSアプリケーション開発クラウドソリューション
シェアする
タイトルとURLをコピーしました