AWS EKS クラスターで Discourse を実行しており、メディアストレージとして同じ AWS アカウントの S3 バケットを使用する予定です。Discourse を実行している EKS Pod には、Kubernetes Service Account と IAM Role が提供されています。S3 バケットはすべてのパブリックアクセスがブロックされており、ACL はバケット所有者(AWS アカウント)にのみ読み取り/書き込みアクセスを許可しています。
Discourse のサイト設定で「s3 アップロードを有効にする 」、「s3 IAM プロファイルを使用する 」、「セキュアなメディアアップロード 」を有効にすると、トピックへのメディアアップロードにセットアップを使用できます。しかし、UploadCreator モジュールのチェックにより、ロゴなどのサイト設定に関連するアップロードは、S3 API の private_acl パラメータが「false」に設定されてアップロードしようとするため失敗します。「セキュアなメディアアップロード 」が有効な場合、すべてのコンテンツが private_acl を true に設定してアップロードされるのは理にかなっていませんか?
Falco
(Falco)
2023 年 1 月 12 日午後 2:21
2
完全にプライベートなインスタンスであっても、ロゴやファビコンのような設定のアップロードはログインページに表示され、公開されていると見なされます。これらは、認証を行わないツール(OpenGraph埋め込みを行うウェブサイト、PWAインストール、Google検索結果など)によって頻繁にダウンロードされます。
「いいね!」 1
その場合、「s3 IAM プロファイルを使用する 」フラグが有効かどうかに依存させる方が理にかなっていますか? IAM プロファイルの使用が有効な場合、バケットにパブリックアクセスがないことを確認していることになり、したがってプライベート ACL でアクセスする必要があります。間違っているかもしれませんが、Discourse でこの設定を使用する理由はないと思います。バケットをパブリックにできない場合を除き。
Falco
(Falco)
2023 年 1 月 12 日午後 2:36
4
いいえ、それは論理的ではありません。
このサイトでは「s3 use iam profile」を使用しており、パブリックバケットも所有しています。両者の間には全く相関関係はありません。
「s3 use iam profile」は、「キー/シークレットペアを渡したくないので、AWSの内部APIから自動的に取得してください」という意味にすぎません。
なるほど。では、S3バケットACLがプライベートであることを指定する別の設定フラグを持つことが唯一の解決策になるかと思いますが、これは非論理的に聞こえますか?
Falco
(Falco)
2023 年 1 月 12 日午後 2:54
6
それはあなたのニーズに対応しますが、ロードマップでは行う予定はありません。ファイル一覧が無効になっている公開バケットと、個別のプライベートACLを持つ実際のファイルは、これまでのところ問題なく機能しています。
あなたのユースケースでは、プライベートファイルを持つ公開バケットがなぜ不可能なのでしょうか?
「いいね!」 3
これは私たちのケースでは企業レベルの決定です。バケットを含むすべての資産はプライベートであるべきで、IAMロールによってアクセス可能にされるべきです。バケットオブジェクトをDiscourseフロントエンドに配信するために、同じEKSクラスターで実行されているS3プロキシアプリケーションを構築し、Discourseの設定でCDNとして設定しました。残っているのは、ロゴなどのサイト設定資産をプライベートとしてアップロードする機能であり、そのためにはこのフラグが必要です。デフォルトでは、Discourseはこのような資産をパブリックとしてアップロードしようとしますが、私はこの新しいフラグでそれを上書きしたいと考えています。
main ← varuncjain:s3-private-bucket-policy-setting
opened 04:31PM - 12 Jan 23 UTC
Introduce new site setting for specifying if S3 bucket policy blocks all public … access
「いいね!」 1
phil22
(Philip)
2025 年 7 月 8 日午後 2:12
11
優れたセキュアアップロード 機能をDiscourseインスタンスで使用していますが、問題なく動作しています。ただし、バケットへのすべての公開アクセスをブロックするサポートがあれば素晴らしいと思います。
最近、AWS Security Hubによって提起されたすべての「AWS Foundational Security Best Practices」の問題を解決しようとしています。そのうちの1つは、「S3汎用バケットは公開アクセスをブロックすべき」というものです。
「AWS Foundational Security Best Practices」を適用しようとして、この問題に直面している企業は少なくないと思います。
すぐに優先されるとは期待していませんが、このスレッドを見つけたので、+1を追加しようと思いました。
AWS FSBPの推奨事項はこちらです:Security Hub controls for Amazon S3 - AWS Security Hub
「いいね!」 1