Archive for the ‘Server’ Category
Firestoreのセキュリティルールのこと
バックエンドをFirebaseでSPAのシステムを作る場合、データを守る砦はデータベース(今回はFirestore)のセキュリティルールです。
Authenticationのログイン情報とFirestore上のユーザー情報を紐付けし権限によりドキュメントへのアクセスを制限するなど、適切な設定しなければなりません。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
これは「ログインしているユーザーはフルアクセス」という最低限設定しておくべきルールです。開発中はお世話になりました。
しかし最終的にはもっとこまかく制限をかける必要がありますから、それを前提にデータ構造を設計しておいたほうが良いです。
例として今回作ったシステムのデータ構造とセキュリティルールの一部について解説します。
Scalewayに30分でGitHubクローンを建てるよ
GitHubクローン、Gogs(https://gogs.io/)をScalewayに5分で建てるというLTネタができるのでは?
と思ってのにやってみたら30分かかることが判明したでござる(完全敗北)
こんにちプレミアム。公開は月曜日だけど書いているのはフライデー。muraveです。
ここのところ続けて書いている Vagrant + Ansible で Scaleway にサーバーを建てるネタの集大成的な内容です。シナリオは
- CentOS7 インスタンスを起動
- CentOS7 基本設定
- 基本ツール類導入
- firewalld起動
- CEFSプロジェクト提供のエラッタに基づきセキュリティアップデート
- MySQL 5.7 導入
- Nginx 導入
- Gogs 導入
- Gogs 初期設定・インストール(Web画面)
- 最初のユーザー(管理者)作成
- テスト用リポジトリ作成
- リポジトリにpush
Gogsの導入時にNginxのリバースプロキシ設定やSELinuxのポリシーモジュール追加などやってるのでPHP動かしたりするときなどにも色々と参考になると思います(と未来の自分に語りかける)
jmurabe/scaleway-centos7gogs
(more…)
ScalewayのSecurity groupに期待しすぎるのをやめる
muraveです。
自分の前の記事『Vagrant+AnsibleでCentOS7のセキュリティアップデートまで』の余談で「ScalewayのSecurity groupについて事前に調整しとくと良いよ」みたいなことを書きましたが、
「Scalewayさんのスパムメール送信対策なんやな〜」
ぐらいの気持ちで接してSecurity groupはなるべく素通しで他の手段で対策したほほうが良さそう、という話。
Vagrant+AnsibleでCentOS7のセキュリティアップデートまで
CentOS7 での yum –security update 事情
夏風邪で減った体重がすっかりもどってしまいました。muraveです。
自身への細菌の侵入は許しましたが、サーバーへの侵入は防がねばなりません(自然な導入)
そんなわけで Ansible では yum update 相当の
yum: name=* state=latest
を毎回やっていたのですが、時間がかかりすぎて辛くなってきました。そんなわけでセキュリティアップデートだけするのがいいかな、と調べ始めました。
yum-plugin-securityというパッケージを利用して
$ yum --security update
が出来ることを知りました(そもそもCentOS7ではyum-plugin-securityがyumに統合されている模様)。 やったぜ!
CentOSのリポジトリではセキュリティアップデート情報が提供されていなくて正常動作しないらしいことも知りました。 やってなかったぜ!
先人の知恵と努力を頼りましょう。
- CEFS: CentOS Errata for Spacewalk
- Spacewalk用のCentOSエラッタを提供しているプロジェクト。
- Inject a little security in to your CentOS repositories
- CEFSのエラッタからupdateinfo.xml作るスクリプト作ったぜー、という話。
- CentOS 7でyumからSecurityUpdateを行えるようにする
- 作業内容は殆どこちらのページそのままです。ありがとうございます。
ということでまとめますと、securiy用のローカルリポジトリを作り、CEFSが提供しているSpacewalk用のエラッタからupdateinfo.xmlを作って設置、yum –security update します。
(more…)
VagrantでScaleway使うと開発に便利なのでは?という話
Dockerに傾倒していたので久しぶりにVagrantさわりました。muraveです。
少し前に弊社代表から「ScalewayってクラウドARM使えるし安いし、いいよ!(ネットワーク的に遠くてもいい場合には)」という情報が社内Slackに投げ込まれて気になっておりました。
Scaleaway (https://www.scaleway.com/)
私としてはX86系最安価でも 2Core + 2GB Memory + 50GB SSD + 1public IPv4 という構成で €2.99/month (€1=¥130として¥388.7) の価格性能比に魅力を感じます。
更に調べると詳細には
- VC1Sサーバー(2Cores 2GB Memory): €1/month (€0.002/hour)
- 50GB SSD Volume: €1/month (€0.002/hour)
- 1 public IPv4: €0.99/month (€0.002/hour)
合計 €2.99/month (€0.006/hour)
という価格内訳で(https://www.scaleway.com/faq/billing/)、パッケージ単位での上限が€2.99/monthとのこと。
上限が無くても時間単位で31日間フル稼働で€4.464(¥580.32)ですので、開発でインスタンスの使い捨てを繰り返して上限が無効な場合でもとんでもないことにはならないと思われます。
課金についてあまり気にしなくてもいいというのは精神的に良いです。
そんなわけでVagrantでScalewayをお気軽に使いたいと思います。
Mac からのリモートデスクトップ接続で日本語キーボード使う
- 2017/08/17
- murave
- Mac
- リモートデスクトップ
DockerのJenkinsコンテナでアクセスログについて悩んでいた
muraveです。
今年の4月にリリースされたJenkins 2系をDocker公式イメージ
で試していたのですが、Webフックからキックしてのビルドを試していて大変ハマリました。Webフックからのアクセス状況とかどうなってんだ?などなどtcpdumpとか使って調べてたんですけど、アクセスログもあったほうがいいよね、と思ったのでした。
公式イメージのJenkinsさんってそのまま立ち上げたらアクセスログ出してくれないんですよね。
調べまして、JENKINS_OPTSに
--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=ログファイルのパス
てな感じで設定すれば良いことはわかりました。分かりましたが、コンテナ内やボリュームにログファイルを出すのは違う気がします。docker logs で見ることができるログはどういう扱いなんでしょう?
デフォルト設定のロギング・ドライバのログ(JSON形式)はホストの
/var/lib/docker/containers/(コンテナID)/(コンテナID)-json.log
にあって、これが docker logs の表示元になっています。
問題はどうやったらここに出力されるのか?ですが、標準出力、標準エラー出力へ出力すれば良いそうです。例えば、Nginx公式イメージのDockerfileでは
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
と、/dev/stdout と /dev/stderr へのシンボリックリンクを作成することで対応しているようです。
Jenkinsさんの場合は先ほどのJENKINS_OPTSでログファイルのパス指定が可能でしたので
--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/dev/stdout
と設定すると標準出力に出力されるようになり、コンテナのログにJenkinsさんへのアクセスログが記録されるようになりました。
これでDockerのロギング・ドライバでアクセスログも統一的にあつかえますね。
例えばFluentdロギング・ドライバに切り替えてログ集約するようにしたりする場合にも安心です。
ConoHaでDocker Machine、2016年夏
Docker for Mac からベータが取れて久しいですが、インストールしたまま放置状態でしたので勉強中です。
とりいそぎ手元の開発環境構築で使いたいのですが、最近よく開発用に利用している ConoHa で Docker Machine していました。なぜか。
Docker for Mac vs. Docker Toolbox を読みますと、Docker for Mac を手元で使う分には Docker Machine を意識する必要すらなくなっているようですが、docker-machineコマンドも含まれてはいたので調べていたらそういうことになっていたのでした。
docker-machineコマンドでConoHa上にDockerのHostをVMレベルからcreateしたりstopしたりrmしたりできるようになったわけですがいまのところあまり使い道が思いつきません。ConoHaだとVM(サーバー)止めてても課金が止まらないんですよねぇ。
検証用や確認用に一時的にHostを立ち上げて(create)終わったらすぐ消す(rm)、とかでしょうか。
せっかくですし、すぐに忘れてしまいそうなので引っかかった箇所のメモを残しておこうと思います。
QNAP ファームウェア4.2.1 で起動スクリプトを追加して dhcpd を自由に設定する
- 2016/06/21
- murave
- QNAP TurboNAS
「NAS(ナス)とNIC(肉)の相性は最高だネ」 夏野菜ジョークでハートキャッチ! muraveです。
QNAP TurboNAS で既存のファイルサーバー(Samba)を置き換えるための準備をしています。
このサーバーは DHCP Server の役割も担っているので NAS の選定時、機能が載っているという確認はしていました。
ところがいざ仕入れてセットアップと動作確認を進めると
「DHCP Server (dhcpd) の設定画面が NAS の IP より後ろしか range の設定できないという仕様でク◯だ!」
「設定した『既定のゲートウェイ』を再起動時に無視して自分のIPを設定しやがって◯ソとかいうレベルじゃなくバグってんじゃねーか!」
などありまして、大変困ってしまったのでした。 あまり使われてないんですかね。
置き換えするサーバーが居るネットワークはなぜか真ん中あたりにゲートウェイが居るし、range だって複数設定したいんだよ!
ということで、回避方法を調べていたところ dhcpd の設定ファイルを書き換えてから kill -HUP する独自の起動スクリプト(autorun.sh)を追加するという方法にたどり着きました。