概要
VPNサーバをAWSに置くことで内部ネットワークに外部からアクセスする手法がありますが、どうしてそれができるのかを知りたくなって調べてみました。
環境
VPNサーバ
- Ubuntu v18.04
- pritunl v1.29.1958.76
クライアント
- macOS Mojave 10.14.2
ネットワーク環境
イメージは以下の図です。
続きを読む
でCircleCIの使い方を説明しましたが、2.1からconfigの記述がよりシンプルになりましたので説明します。
まずはAdvanced Settings
で2.1の機能が使えるようにします。
古いプロジェクトだとOFFのままなのでONにしてください。新しいプロジェクトだと最初からONになっています。
続きを読むで書いていなかったことの追加です。
panicをrecoverしたものはいいものの、
func f() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() panic("panic") }
このように単純にrecoverしてハイ終わり、としているとpanicを起こしたのに処理が正常系で進んでしまうという問題があります。
特にWebサーバとしてはpanicが起きたので500エラーとして返すべきです。
なのでpanicをerrorに変換して、後の処理にerrorを渡す必要があります。
Consulではserviceを登録することでService Discovery機能を活用することができます。
例えば
"service": { "name": "payment", "port": 9090, "tags": ["development"] }
のように設定をすると、
$ dig @localhost -p 8600 payment.service.consul
でpayment
サービスとして登録したノードのIP群を取得できます。
詳細を知りたい方は以下を参考にしてください。
今回はこのサービス登録でACLを設定しているとうまく行かずハマってしまった話です。
続きを読むsts:Assume Roleは第三者に自分のAWSアカウントのAPI権限を委譲する仕組みです。
ここで言う第三者というのは
のように様々なモノに委譲が可能です。
具体的にこの仕組みがどういったことに使えるかをざっと挙げてみます。
ポリシー (付与する権限) |
信頼関係 (誰に付与するか) |
どうなるか |
---|---|---|
EC2ReadOnly | EC2 | EC2インスタンスから http://169.254.169.254/latest/meta-data にアクセスが可能 |
PowerUser | IAMユーザ | IAMユーザ自体は権限を持っていなくても、 AssumeRoleでPowerUserの 一時的な権限を取得できる |
S3ReadOnly | 他AWSアカウント | 他AWSアカウントから自分の S3バケットへアクセス可能 |