Kubernetesのセキュリティのベストプラクティス by Ian Lewis

Japan Container Days v18.04で表題のセッションを聞いたので、まとめました。 スライド資料 Kubernetesのセキュリティのベストプラクティス(SpeakerDeck) APIサーバへの攻撃を防ぐ RBACでPodに付与される権限を絞る Podにはシークレットが自動でマウントされるため、不正アクセスにより読み込まれてしまうと危ない FirewallでAPIサーバへのアクセスについてIP制限を付与する いざ、シークレットが漏れた場合でも、APIサーバにアクセスされてしまわないように、ファイアウォールでIP制限をかけておくと良い NetworkPolicyでDBへの接続が許可されるPodを制限する 大体の場合、重要なデータはDBに有るため、DBへのアクセスを絞ることで安全性を上げる example: kind: NetworkPolicy

Kubernetesのセキュリティのベストプラクティス by Ian Lewis
Read more...

Raspberry PiのヘッドレスインストールでWi-Fiを設定する

uzullaさんがブログでこんなことを書いてた。 しかし…/boot/のどこかに起動後実行されるスクリプトがあれば楽なのにな…(そこで無理やりwifi情報を書き込めば良いわけで) ヘッドレスRaspberry Pi Zero w(h)のコンソールやネットワークなど初期設定についてメモ - uzullaがブログ 私も過去何度かRaspberry Pi Zeroのヘッドレスインストールをしてまして、実はヘッドレスインストールの時にWi-Fi情報を書き込めるファイルがあるのです。 /boot/wpa_supplicant.confというファイルで、ここにWi-Fiの設定を書き込んで起動すると、raspbianが/etc/wpa_

Raspberry PiのヘッドレスインストールでWi-Fiを設定する
Read more...

TOTPを実装する

ここ数年で多くのサービスで採用されてきている二要素認証ですが、皆さん使っているでしょうか。 私は実は最近までは面倒であまり使っていなかったのですが、ようやく重い腰を上げてあちこち設定しました。 そのうち、近年特によく使われているのがTOTP(Time-Based One-Time Password)と呼ばれるアルゴリズムです。 TOTPアルゴリズムはRFC6238で定義されたアルゴリズムで、サーバとクライアントが共有する秘密鍵および現在時刻から確認用のコードを生成するものです。 RFCやWikipediaを見てわかるよう、かなり簡素なアルゴリズムで、一つ一つ理解していけば比較的簡単に実装することができます。 Go言語のコードを実例に、サンプルコードを実装してみます。 HOTPとTOTP TOTPアルゴリズムとよく似たものに、HOTP(HMAC-Based One-Time Password)と呼ばれるアルゴリズムがあります。 これは、

TOTPを実装する
Read more...

Golang: 配列からスライスに変換する

TL;DR: slice := array[:]で変換できる Go言語にはリストの様なものが二つあります。配列(固定長)とスライス(可変長)です。 一般に、Go言語で配列を扱うことは多くないでしょう。 実際、多くのパッケージ(標準パッケージを含む)が要求するのはスライスです。 とは言っても一部のパッケージでは配列を取り扱っているものがあります。 例えば、crypto/sha512を見てみると、以下の様な関数が存在します。 func Sum512(data

Golang: 配列からスライスに変換する
Read more...

Let's Encryptでワイルドカード証明書を取得する

先日twitterでサポートされたと発表されたLet's Encryptのワイルドカード証明書ですが、本日未明、正式にcertbotがワイルドカード証明書に対応したと発表されました![1] 早速ですが、実際にワイルドカード証明書を取得してみます。 尚、今回対象とした環境は以下のとおりです。 CentOS 7 リバースプロキシとしてnginx DNSはGehirn DNS では、作業していきます。 CentOS 7でcertbotを使用する場合、大抵はyumでcertbotをインストールしていると思いますので、まずはアップデートします。 $ sudo yum update 出力は省略しますが、certbotが0.

Let's Encryptでワイルドカード証明書を取得する
Read more...

Go言語で文字列を処理する

Go言語のregexpパッケージを使用した正規表現の処理は、一般的なスクリプト言語の処理速度と同程度で、正規表現を使用しない処理に比べてパフォーマンスがよくありません[1]。 そのため、可能であるならregexpパッケージを使用しないようにすべきです。 しかし、すべての処理を自分で書くのは大変です。 標準パッケージにも文字列を処理する関数が数多く用意されています。 strings パッケージ stringsパッケージはその名の通り、文字列を取り扱うパッケージです。 UTF-8でエンコードされた文字列(普通の文字列)をそのまま取り扱います。 判別系 Contains func Contains(s, substr string) bool Contains関数は、

Go言語で文字列を処理する
Read more...

YAPC::Okinawa 2018 ONNASONに行ってきました

YAPC::Fukuoka 2017 HAKATA(行ってきたときの記事はこちら)に引き続き、YAPC::Okinawa 2018 ONNASONに行ってきました。 YAPCはPerlのイベントで、"Yet Another Perl Conference"の略です。twitterハッシュタグは前回に引き続き#yapcjapanでした(#yapcokinawaもよく使われていたようです)。 沖縄は昨年6月にOSC 2017 Okinawaで行って以来二度目です。 YAPC当日はすごい雨で、

YAPC::Okinawa 2018 ONNASONに行ってきました
Read more...

Goでコマンドラインオプションを処理する

TL;DR github.com/jessevdk/go-flagsが便利 flagパッケージ コマンドライン・ツールを作ろうと考えたとき、避けては通れないのがコマンドラインオプションを如何に処理するか、ということです。 Go言語では、標準パッケージにflagというパッケージが存在し、これを用いることでコマンドラインオプションをパースすることが出来ます。 しかし、flagパッケージでは、ロングオプションとショートオプションを一度に定義することが出来ず、また、ロングオプションであろうとショートオプションであろうと-XXXという、ハイフンが一つつく形式のオプションとなります。 これはあまり一般的ではなく[1]、便利とも言いにくいでしょう。 そこで便利なのが、jessevdk/

Goでコマンドラインオプションを処理する
Read more...
Load more