N日以前・以後から起動しているEC2インスタンス一覧を取得する

動作環境

30日以前に起動したインスタンスを取得する

DATE=`date -v-30d +%Y-%m-%d`; aws ec2 describe-instances --filter Name=instance-state-name,Values=running --query "Reservations[].Instances[?LaunchTime<=\`$DATE\`][].{id: InstanceId, type: InstanceType, launched: LaunchTime, tags: Tags}" 

100日以前にしたい場合はdate -v-30d +%Y-%m-%dの30を100に変更する。 filterのrunningstoppedに変えると停止中のインスタンス一覧を取得できる。

ベーシック認証とダイジェスト認証

HTTPの認証方法で代表的なものとしてベーシック認証、ダイジェスト認証などがある。

ベーシック認証

ベーシック認証は基本認証と呼ばれることもあり、ユーザとパスワードをコロンで繋ぎBase64エンコードしたものを送信する。

サーバには以下のようなフォーマットでヘッダに含まれる。

Basic Z3Jtbjpob2dlaG9nZQ==

セキュリティ

盗聴された場合はbase64でデコードすることで簡単にユーザ・パスが判明する。

$ echo 'Z3Jtbjpob2dlaG9nZQ==' | base64 -D
grmn:hogehoge

設定方法(Apacheの場合)

htpasswdの作成

$ htpasswd -c -b /path/to/.htpasswd <ユーザ名> <パスワード> #新規作成
$ htpasswd -b /path/to/.htpasswd <ユーザ名> <パスワード> #追記

Apacheの設定

AuthType Basic
AuthName "Access to the staging site"
AuthUserFile /path/to/.htpasswd
Require valid-user

ダイジェスト認証

ベーシック認証で問題となった盗聴・改竄を防ぐために考案された。 パスワードをMD5でハッシュ化したものを送信する。ユーザ名は平文で流れる。

サーバには以下のようなフォーマットで送信される。

Digest username=\"grmn\", realm=\"Access to the staging site\", nonce=\"uWyUio91BQA=272da557c40a99343123d4de48a6ed1024cb5f60\", uri=\"/path/to/index.html\", algorithm=MD5, response=\"6b752b43a30e613c520f78b346553775\", qop=auth, nc=00000001, cnonce=\"2c2e499270c1169b\"

ダイジェスト認証の大枠の流れはDigest認証 - Wikipediaがわかりやすい。

htpasswdの作成

新規作成の場合は「-cオプション」を追加。追記の場合は「-cオプション」を除く。

$ htdigest -c /path/to/.htpasswd "Access to the staging site" ユーザ名
Adding password for grmn in realm Access to the staging site.
New password:<パスワード応答>
Re-type new password:<パスワード応答>

Apacheの設定

AuthType Digest
AuthName "Access to the staging site"
AuthUserFile /path/to/.htpasswd
Require valid-user

参考

HTTP 認証 - HTTP | MDN

Digest認証 - Wikipedia

Apache(mod_wsgi) + Flask環境でベーシック認証が効かない

Apacheの設定にWSGIPassAuthorization Onを追加する必要があある。

例) /etc/httpd/conf.d/wsgi.conf

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On

WSGIPassAuthorization — mod_wsgi 4.6.5 documentation

Docker ERROR: 2 matches found based on name: network api_default is ambiguous

重複してるDockerネットワークを削除する

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a09c35602c0f        api_default         bridge              local
c33c065d9280        api_default         bridge              local
$ docker network rm c33c065d9280

参考

2 matches found based on name: network ddev_default is ambiguous · Issue #811 · drud/ddev · GitHub