5.7.17. ルート内の特定ドメインの拒否または許可
ルーターは、ROUTER_DENIED_DOMAINS および ROUTER_ALLOWED_DOMAINS 環境変数を使用して、ルート内のホスト名からのドメインサブセットを限定して拒否または許可するように設定できます。
|
| 一覧表示されるドメインは指定のルートで許可されません。 |
|
| 一覧表示されるドメインのみが指定のルートで許可されます。 |
拒否ドメインの一覧に含まれるドメインは、許可ドメイン一覧よりも優先されます。つまり、OpenShift Container Platform は先に、拒否リスト (該当する場合) をチェックして、ホスト名が拒否ドメイン一覧に含まれていない場合に、許可ドメインをチェックします。ただし、許可ドメインの一覧はより制限されており、ルーターは、その一覧に所属するホストが含まれるルートのみを許可します。
たとえば、myrouter ルートの [*.]open.header.test、[*.]openshift.org、および [*.]block.it を拒否するには、次の 2 つのコマンドを実行します。
oc adm router myrouter ...
$ oc adm router myrouter ...
oc set env dc/myrouter ROUTER_DENIED_DOMAINS="open.header.test, openshift.org, block.it"
$ oc set env dc/myrouter ROUTER_DENIED_DOMAINS="open.header.test, openshift.org, block.it"
これは、myrouter がルートの名前に基づいて以下を許可することを意味します。
oc expose service/<name> --hostname="foo.header.test"
$ oc expose service/<name> --hostname="foo.header.test"
oc expose service/<name> --hostname="www.allow.it"
$ oc expose service/<name> --hostname="www.allow.it"
oc expose service/<name> --hostname="www.openshift.test"
$ oc expose service/<name> --hostname="www.openshift.test"
ただし、myrouter は以下を拒否します。
oc expose service/<name> --hostname="open.header.test"
$ oc expose service/<name> --hostname="open.header.test"
oc expose service/<name> --hostname="www.open.header.test"
$ oc expose service/<name> --hostname="www.open.header.test"
oc expose service/<name> --hostname="block.it"
$ oc expose service/<name> --hostname="block.it"
oc expose service/<name> --hostname="franco.baresi.block.it"
$ oc expose service/<name> --hostname="franco.baresi.block.it"
oc expose service/<name> --hostname="openshift.org"
$ oc expose service/<name> --hostname="openshift.org"
oc expose service/<name> --hostname="api.openshift.org"
$ oc expose service/<name> --hostname="api.openshift.org"
または、ホスト名が [*.]stickshift.org または [*.]kates.net に設定されて いない ルートをブロックするには、次の 2 つのコマンドを実行します。
oc adm router myrouter ...
$ oc adm router myrouter ...
oc set env dc/myrouter ROUTER_ALLOWED_DOMAINS="stickshift.org, kates.net"
$ oc set env dc/myrouter ROUTER_ALLOWED_DOMAINS="stickshift.org, kates.net"
これは、myrouter ルートが以下を許可することを意味します。
oc expose service/<name> --hostname="stickshift.org"
$ oc expose service/<name> --hostname="stickshift.org"
oc expose service/<name> --hostname="www.stickshift.org"
$ oc expose service/<name> --hostname="www.stickshift.org"
oc expose service/<name> --hostname="kates.net"
$ oc expose service/<name> --hostname="kates.net"
oc expose service/<name> --hostname="api.kates.net"
$ oc expose service/<name> --hostname="api.kates.net"
oc expose service/<name> --hostname="erno.r.kube.kates.net"
$ oc expose service/<name> --hostname="erno.r.kube.kates.net"
ただし、myrouter は以下を拒否します。
oc expose service/<name> --hostname="www.open.header.test"
$ oc expose service/<name> --hostname="www.open.header.test"
oc expose service/<name> --hostname="drive.ottomatic.org"
$ oc expose service/<name> --hostname="drive.ottomatic.org"
oc expose service/<name> --hostname="www.wayless.com"
$ oc expose service/<name> --hostname="www.wayless.com"
oc expose service/<name> --hostname="www.deny.it"
$ oc expose service/<name> --hostname="www.deny.it"
両方のシナリオを実装するには、以下の 2 つのコマンドを実行します。
oc adm router adrouter ...
$ oc adm router adrouter ...
oc set env dc/adrouter ROUTER_ALLOWED_DOMAINS="okd.io, kates.net" \
ROUTER_DENIED_DOMAINS="ops.openshift.org, metrics.kates.net"
$ oc set env dc/adrouter ROUTER_ALLOWED_DOMAINS="okd.io, kates.net" \
ROUTER_DENIED_DOMAINS="ops.openshift.org, metrics.kates.net"
これにより、ホスト名が [*.]openshift.org または [*.]kates.net に設定されているルートを許可し、ホスト名が [*.]ops.openshift.org または [*.]metrics.kates.net に設定されているルートは拒否します。
そのため、以下は拒否されます。
oc expose service/<name> --hostname="www.open.header.test"
$ oc expose service/<name> --hostname="www.open.header.test"
oc expose service/<name> --hostname="ops.openshift.org"
$ oc expose service/<name> --hostname="ops.openshift.org"
oc expose service/<name> --hostname="log.ops.openshift.org"
$ oc expose service/<name> --hostname="log.ops.openshift.org"
oc expose service/<name> --hostname="www.block.it"
$ oc expose service/<name> --hostname="www.block.it"
oc expose service/<name> --hostname="metrics.kates.net"
$ oc expose service/<name> --hostname="metrics.kates.net"
oc expose service/<name> --hostname="int.metrics.kates.net"
$ oc expose service/<name> --hostname="int.metrics.kates.net"
しかし、以下は許可されます。
oc expose service/<name> --hostname="openshift.org"
$ oc expose service/<name> --hostname="openshift.org"
oc expose service/<name> --hostname="api.openshift.org"
$ oc expose service/<name> --hostname="api.openshift.org"
oc expose service/<name> --hostname="m.api.openshift.org"
$ oc expose service/<name> --hostname="m.api.openshift.org"
oc expose service/<name> --hostname="kates.net"
$ oc expose service/<name> --hostname="kates.net"
oc expose service/<name> --hostname="api.kates.net"
$ oc expose service/<name> --hostname="api.kates.net"