😽

Omeka Sで非公開ファイルを扱う

2024/01/14に公開

概要

Omeka Sでは、リソース(アイテムセット、アイテム、メディアなど)単位で公開/非公開の設定を行うことができますが、メディア等に紐づけられた画像などのファイルについては、非公開の設定が適用されていても、ファイルのURLを知っていれば誰でもアクセスすることができます。通常、以下のようなURLになります。

<Omekaのインストールディレクトリ>/files/original/<ハッシュ値>.jpg

メディアに非公開の設定が適用されていれば、このファイルのURLが知られることは稀かと思いますが、「リンクを知っている全員」がアクセスできてしまう状況を避けたいケースがあります。

上記に対応するモジュールとして、「Access」がありました。

https://omeka.org/s/modules/Access/

本記事では、本モジュールについて簡単に紹介します。

参考: Drupalの場合

Drupalにおいては、Private filesを使って、上記の問題に対応することができました。この実現にあたっては、以下の記事が参考になりました。

https://wheelercreek.com/blog/how-configure-private-files-directory-drupal-9-10

ファイルをPrivate filesとして登録し、 Access ContentField Permissions モジュールと組み合わせて、匿名ユーザによるPrivate filesへのアクセスを制限することができました。

Accessモジュールの使い方

本モジュールはIPアドレスによるアクセス制御や Guest モジュールとの組み合わせによる匿名ユーザによるアクセス制御など、多様な設定を行うことができるようです。

今回は、単純な設定として、original(オリジナル)およびlarge(オリジナルより小さいサイズの画像)、medium(ラージよりも小さい画像)などについて、匿名ユーザはoriginalおよびlargeの画像は閲覧できないが、medium以下の画像は閲覧できるようにしてみます。

つまり、非ログインユーザは、大きな画像は閲覧できないが、比較的小さな画像のみ閲覧できる環境を構築します。

インストール

通常の方法でインストールできます。

ウェブサーバの設定

この点が少し面倒かもしれません。以下に記載があります。

https://github.com/Daniel-KM/Omeka-S-module-Access?tab=readme-ov-file#configuration-of-the-web-server

以下、Apacheの例ですが、.htaccessファイルのRewriteEngine Onに後に、以下を追記します。

# Set rule for original and selected derivative files (usually at least large thumbnails).
RewriteRule "^files/(original|large)/(.*)$" "/access/files/$1/$2" [P]

上記は、ドメインまたはサブドメインのルートにOmeka Sがインストールされている場合です。その他の方法でインストールされた場合の設定例についても、上記のマニュアルに記載されています。

上記により、<Omekaのインストールディレクトリ>/files/original/<ハッシュ値>.jpgなどにアクセスすると、<Omekaのインストールディレクトリ>/access/files/original/<ハッシュ値>.jpgというURLに書き換えられます。

書き換えられた後のURLはOmeka Sが動的に作成するもので、IPアドレスやログイン状態などを考慮して、画像を返却するかを決定するようです。

先に紹介したDrupalにおいては、Public filesがファイルが格納されているパス、Private filesがDrupalが動的に生成するURLになるようなので、このような切り替えをOmeka Sでも実現していることになります。

設定

モジュールのインストール後、以下のような設定画面が表示されます。今回の用途では、全てのチェックを外しておきます。

本モジュールを有効にすることにより、リソースごとにAccess levelを設定できるようになります。今回の用途では、禁止を与えます。

「いらすとや」さんの画像を利用しています。Access statusforbiddenになっていますが、ログインユーザは当該画像を閲覧できています。

一方、非ログインユーザで画像を閲覧した際には、鍵のアイコンが表示されるようになりました。オリジナル画像等にアクセスできていないことが確認できます。

なお、上記の画面の下部の小さい画像は表示されています。これはmediumを正方形にしたsquareファイルです。largeよりも小さい画像で、先ほどのRewriteルールに引っかからないため、通常通りに表示されています。

参考

Amazon S3モジュールなどを使って、Amazon S3にファイルを格納している場合、2024-01-14時点ではうまくいきませんでした。これは以下のTODOに記載がありますが、オリジナルファイルのURLが変わってしまうためです。

https://github.com/Daniel-KM/Omeka-S-module-AmazonS3?tab=readme-ov-file#todo

Drupalの場合、以下の記事など参考に設定することで、S3に格納したPrivate filesでも正しく動作しました。

https://www.vardot.com/en/ideas/blog/how-integrate-amazon-s3-drupal-step-step-guide

Omeka Sは公開を主眼としたシステムであるため、非公開ファイルの取り扱いはDrupalに比べて苦手なようです。これらの特徴を踏まえて、用途に応じて適切なCMSを選択していくのがよいように思いました。

まとめ

Omeka Sで非公開ファイルを扱う一例について紹介しました。他にも様々な設定が可能なようなので、改めて調べてみたいと思います。

他の方の参考になりましたら幸いです。

Discussion