Encrypt_storage
背景 サービスを利用するとき、提供者に悪意があることを前提にもの事を考えるべきである。 何かがあってからでは遅いからである。 クラウドサービスのストレージが暗号化されていないのが気に食わない。 万が一ストレージのデータが流出することに備え、ストレージを暗号化したい。 アプリケーションレイヤーではなく、fsレイヤーで暗号化したい。 さて、どうやるのかね。 透過的暗号 & 復号 gocryptfsという、透過的暗号化をディレクトリ単位でしてくれるツールがあります。 これが素晴らしい。ユーザランドで動く。すぐ動かせる。 インストール方法 sudo apt install gocryptfs # または公式のバイナリをダウンロード 暗号化されるディレクトリの作成方法 mkdir ~/secure_data.encrypted gocryptfs -init ~/secure_data.encrypted 復号されるディレクトリを暗号化されたディレクトリにマウント mkdir ~/decrypted_data gocryptfs ~/secure_data.encrypted ~/decrypted_data gocryptfs はシンプルで信頼性が高く、後付けでも運用しやすいです。 実際に、mongodbのデータを移植した方法がこちら # install sudo apt update sudo apt install gocryptfs # make directories mkdir -p /secure/mongodb.encrypted gocryptfs -init /secure/mongodb.encrypted # パスワードを設定 mkdir /secure/mongodb # mongodbのデータ領域の確認 docker volume inspect rocketchat_mongodb_data # コピーを/secure/mongodbに移動 (allow_otherでしないとmongodb(非rootユーザが読めなくなる)) gocryptfs -o allow_other /secure/mongodb.encrypted /secure/mongodb cp -a /var/lib/docker/volumes/rocketchat_mongodb_data/_data/* /secure/mongodb/ # バインドマウントからボリュームマウントに切り替える vim compose.yml volumes: - /secure/mongodb:/bitnami/mongodb # docker composeで再起動 docker compose up -d つまりポイント 権限回り。mongodbが実行するのですが、所有者と権限にはくれぐれもご注意。 1001をownerにしないとうまくいかないです。 ...