Armadilloフォーラム

ABOS Web REST APIへのアクセスをコンテナ/localhostからだけに制限したい

tmygt

2023年12月28日 13時50分

ABOS Web REST APIの利用を検討しています。APIはコンテナ内から呼び出します。また、通常のABOS Web(GUI)を使う予定はありません。
このような状況なので、ABOS Web へのアクセスはコンテナ/localhostからに制限したいです。

iptablesで通信を落とす方法も考えられるのですが、こちらのアプリケーションの事情でiptablesでの設定は追加せず、可能であればiptablesを使わない方法を取りたいです。

ABOS Webのソースコードを読んだところ、起動時にlisten_addrオプションで指定できそうなのですが、これを指定するにはどのようにすればよいでしょうか?

コメント

at_dominique.m…

2023年12月28日 15時33分

tmygtさん

マルティネです。

> ABOS Web REST APIの利用を検討しています。APIはコンテナ内から呼び出します。また、通常のABOS Web(GUI)を使う予定はありません。
> このような状況なので、ABOS Web へのアクセスはコンテナ/localhostからに制限したいです。
>
> ABOS Webのソースコードを読んだところ、起動時にlisten_addrオプションで指定できそうなのですが、これを指定するにはどのようにすればよいでしょうか?

abos-web に --listen-addr のオプションがありますが、コンテナの場合は network host 以外で localhost をアクセスできないので、代わりに --allowed-subnets を使った方がいいと思います。(そのオプションは web UI と rest api の両方に適用されています)

設定方法としては、openrc のサービスすべてがデフォルトで 「/etc/conf.d/サービス名」のファイルで設定可能になっていますので、abos-web もそれで設定できます。

そこでまた一つ誤らないといけない点があって、swupdate_preserve_files の都合で代わりに /etc/atmark/abos_web/init.conf を使っていただければと思います。
本来ならデフォルトの /etc/conf.d/abos-web が存在するはずなんですが、パッケージに入れてなかったので設定管理画面の修正のついでに今日リリース予定のアップデートに追加しまして、1月末のアップデートに製品マニュアルにも説明を追加します。
お手数ですが、すぐ試す分に両方のファイルを作っておいてください:

armadillo:~# cat /etc/conf.d/abos-web
# Note it is recommended to set it through /etc/atmark/abos_web/init.conf
# to preserve on updates
 
if [ -e /etc/atmark/abos_web/init.conf ]; then
	. /etc/atmark/abos_web/init.conf
fi
 
# Set command_args to customize any abos-web option (see abos-web --help)
# example, this allows access from any IP:
#command_args="--allowed-subnets 0.0.0.0/0 --allowed-subnets ::/0"
 
armadillo:~# cat /etc/atmark/abos_web/init.conf
command_args="--allowed-subnets 10.88.0.0/16"

で外部のアクセスでエラーするようになります

(ちなみに「--listen-addr 10.88.0.1:58080」でできそうなところもありますが、その場合はコンテナの後に起動させないと起動時に abos-web が起動されない場合もあります:

depend() {
   after podman-atmark
}
 
command_args="--listen-addr 10.88.0.1:58080"

ちょっと微妙なので、allowed-subnets が便利かと思います)

何か分かりにくいところがあればまた聞いてください。

よろしくお願いします

tmygt

2023年12月28日 17時02分

> abos-web に --listen-addr のオプションがありますが、コンテナの場合は network host 以外で localhost をアクセスできないので、代わりに --allowed-subnets を使った方がいいと思います。(そのオプションは web UI と rest api の両方に適用されています)
>
> 設定方法としては、openrc のサービスすべてがデフォルトで 「/etc/conf.d/サービス名」のファイルで設定可能になっていますので、abos-web もそれで設定できます。
>
> そこでまた一つ誤らないといけない点があって、swupdate_preserve_files の都合で代わりに /etc/atmark/abos_web/init.conf を使っていただければと思います。
> 本来ならデフォルトの /etc/conf.d/abos-web が存在するはずなんですが、パッケージに入れてなかったので設定管理画面の修正のついでに今日リリース予定のアップデートに追加しまして、1月末のアップデートに製品マニュアルにも説明を追加します。
> お手数ですが、すぐ試す分に両方のファイルを作っておいてください:
>
>

> armadillo:~# cat /etc/conf.d/abos-web
> # Note it is recommended to set it through /etc/atmark/abos_web/init.conf
> # to preserve on updates
> 
> if [ -e /etc/atmark/abos_web/init.conf ]; then
> 	. /etc/atmark/abos_web/init.conf
> fi
> 
> # Set command_args to customize any abos-web option (see abos-web --help)
> # example, this allows access from any IP:
> #command_args="--allowed-subnets 0.0.0.0/0 --allowed-subnets ::/0"
> 
> armadillo:~# cat /etc/atmark/abos_web/init.conf
> command_args="--allowed-subnets 10.88.0.0/16"
> 

> で外部のアクセスでエラーするようになります
>
> (ちなみに「--listen-addr 10.88.0.1:58080」でできそうなところもありますが、その場合はコンテナの後に起動させないと起動時に abos-web が起動されない場合もあります:
>

> depend() {
>    after podman-atmark
> }
> 
> command_args="--listen-addr 10.88.0.1:58080"
> 

> ちょっと微妙なので、allowed-subnets が便利かと思います)
>
>
> 何か分かりにくいところがあればまた聞いてください。
>
> よろしくお願いします

マルティネさん

回答ありがとうございます。

> abos-web に --listen-addr のオプションがありますが、コンテナの場合は network host 以外で localhost をアクセスできないので、代わりに --allowed-subnets を使った方がいいと思います。(そのオプションは web UI と rest api の両方に適用されています)

わかりました。 allowed-subnetsでpodmanのネットワークを指定するようにします。

> 設定方法としては、openrc のサービスすべてがデフォルトで 「/etc/conf.d/サービス名」のファイルで設定可能になっていますので、abos-web もそれで設定できます。
>
> そこでまた一つ誤らないといけない点があって、swupdate_preserve_files の都合で代わりに /etc/atmark/abos_web/init.conf を使っていただければと思います。

ここが理解しきれていないので教えてください。
記載いただいたファイルでは /etc/conf.d/abow-web で /etc/atmark/abos-web/init.conf を読み込むことになっていますが、実際のアップデートでは /etc/atmark/abos-web/*.conf の様な任意のconfを読みこむようになるのでしょうか?

tmygt

2023年12月28日 17時03分

マルティネさん

(引用文を消し忘れて読みにくいので再投稿します)
回答ありがとうございます。

> abos-web に --listen-addr のオプションがありますが、コンテナの場合は network host 以外で localhost をアクセスできないので、代わりに --allowed-subnets を使った方がいいと思います。(そのオプションは web UI と rest api の両方に適用されています)

わかりました。 allowed-subnetsでpodmanのネットワークを指定するようにします。

> 設定方法としては、openrc のサービスすべてがデフォルトで 「/etc/conf.d/サービス名」のファイルで設定可能になっていますので、abos-web もそれで設定できます。
>
> そこでまた一つ誤らないといけない点があって、swupdate_preserve_files の都合で代わりに /etc/atmark/abos_web/init.conf を使っていただければと思います。

ここが理解しきれていないので教えてください。
記載いただいたファイルでは /etc/conf.d/abow-web で /etc/atmark/abos-web/init.conf を読み込むことになっていますが、実際のアップデートでは /etc/atmark/abos-web/*.conf の様な任意のconfを読みこむようになるのでしょうか?

at_dominique.m…

2023年12月28日 17時09分

tmygtさん

マルティネです。

> ここが理解しきれていないので教えてください。
> 記載いただいたファイルでは /etc/conf.d/abos-web で /etc/atmark/abos-web/init.conf を読み込むことになっていますが、実際のアップデートでは /etc/atmark/abos-web/*.conf の様な任意のconfを読みこむようになるのでしょうか?

分かりにくい説明ですみません。
アップデートでは今提供した例と同じ内容になって、init.conf だけを読み込みます。

アップデートは先ほど公開しましたので、インストールしていただければ確認できます。

よろしくお願いします。

tmygt

2024年1月9日 17時01分

マルティネさん

アップデートありがとうございます。
ABOSを更新して下記のようなinit.confを作成することでコンテナからのアクセスに制限できることを確認できました。
(--net=host を使うコンテナもあるので、127.0.0.0/8も追加しています。)

command_args="--allowed-subnets 10.88.0.0/16 --allowed-subnets 127.0.0.0/8"

以上、ご対応ありがとうございました。