2021-02-08に更新

【S3】【Moodle】S3のバケットポリシーで 特定の HTTP Referer へのアクセスの制限 を導入したら、Moodle でリンクした動画が再生できずにハマった

MoodleのコンテンツとしてS3に保管しているファイルをURLモジュールでリンクしているのですが、S3のバケットポリシーを 匿名ユーザーへの読み取り専用アクセス許可の付与 で設定していたため、
ファイルを直リンクできる状態になっていました
あまりよろしい状態とは言えないので、 特定の HTTP Referer へのアクセスの制限 を導入してみたところ、Moodleの挙動でちょっとハマったので備忘メモしておきます

確認済み環境

  • Moodle (bitnami-moodle-3.8.2)

S3のバケットポリシー

こんな感じで、MoodleのURLからのみS3のファイルにアクセスできるようにしてみました

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow get requests originating from moodle.aroha.test and moodle-staging.aroha.test",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::arohatest/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://moodle-staging.aroha.test/*",
                        "https://moodle.aroha.test/*"
                    ]
                }
            }
        }
    ]
}

バケットポリシーを変更したら、動画ファイルのリンクで問題発生!

バケットポリシーを変えたところ、以下のようにリンクしている動画ファイルが再生できなくなりました(T T)
PDFファイルへのリンクは問題無く動くので、Moodle側に問題がありそうです

b7fe208ec86544c2a734fd55e131b643.jpg

問題の回避策

URLモジュールでアピアランスをポップアップに設定した動画ファイルは全てNGなので、自動 or 埋め込み に変更してみました
(詳しく調べていませんが、ポップアップだと HTTP Referer が送られないのかな?)

9bf1918ab705e6bf7fbd4d02f95692fc.png

回避後の様子

Moodleのページ内に動画が埋め込まれますが、ちゃんと再生できました
しかし、これじゃ動画のサイズが小さく固定されて見にくい(T T)

48cab808d912677c2ac3a681fe643787.jpg

埋め込まれた動画のサイズを変える方法

  1. メディアプレイヤのプラグインから、VideoJSプレイヤの設定を開く

    fc5ed9d8423a6e807bd8193fc0604b88.jpg

  2. サイズを制限するのチェックを外して、変更を保存する

    2147762179d355b0f77a4fb0275d4d8e.jpg

VideoJSプレイヤの設定変更後の様子

ブラウザのウインドウサイズに合わせた動画サイズになり、見やすくなりました (^^)

6c4718708264783637151a3f79ad4c69.jpg

まとめ

moodleでHTTP Refererのアクセス制限をしたS3の動画ファイルをリンクをする場合、アピアランスをポップアップにすると動画は再生できない。
アピアランスは自動か埋め込みを選択しましょう。

ツイッターでシェア
みんなに共有、忘れないようにメモ

arohajiro

しがない元インフラエンジニアです

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント