2.3. Service Mesh の保護
認可ポリシーと mTLS により、Service Mesh を保護できます。
手順
テナントのすべての Red Hat OpenShift Serverless プロジェクトがメンバーとして同じ
ServiceMeshMemberRollオブジェクトの一部であることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow メッシュの一部であるすべてのプロジェクトは、mTLS を厳密モードで強制する必要があります。これにより、Istio はクライアント証明書が存在する接続のみを受け入れるようになり、Service Mesh サイドカーが
AuthorizationPolicyオブジェクトを使用して接続元を検証できるようになります。knative-servingおよびknative-eventingnamespace にAuthorizationPolicyオブジェクトを使用して設定を作成します。knative-default-authz-policies.yaml設定ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのポリシーは、Serverless システムコンポーネント間のネットワーク通信のアクセスルールを制限します。具体的には、次のルールが適用されます。
-
knative-servingおよびknative-eventingnamespace で明示的に許可されていないすべてのトラフィックを拒否します。 -
istio-systemおよびknative-servingnamespace からアクティベーターへのトラフィックを許可する -
knative-servingnamespace からオートスケーラーへのトラフィックを許可する -
knative-eventingnamespace で Apache Kafka コンポーネントの正常性プローブを許可する -
knative-eventingnamespace でチャネルベースのブローカーの内部トラフィックを許可する
-
認可ポリシー設定を適用します。
oc apply -f knative-default-authz-policies.yaml
$ oc apply -f knative-default-authz-policies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow どの OpenShift プロジェクトが相互に通信できるかを定義します。この通信のために、テナントのすべての OpenShift プロジェクトには以下が必要です。
-
テナントのプロジェクトへの直接受信トラフィックを制限する 1 つの
AuthorizationPolicyオブジェクト -
knative-servingプロジェクトで実行する Serverless のアクティベータコンポーネントを使用して受信トラフィックを制限する 1 つのAuthorizationPolicyオブジェクト -
Kubernetes が Knative Services で
PreStopHooksを呼び出すことを許可する 1 つのAuthorizationPolicyオブジェクト
これらのポリシーを手動で作成する代わりに、
helmユーティリティーをインストールし、各テナントに必要なリソースを作成します。Helmユーティリティーのインストールhelm repo add openshift-helm-charts https://charts.openshift.io/
$ helm repo add openshift-helm-charts https://charts.openshift.io/Copy to Clipboard Copied! Toggle word wrap Toggle overflow team alpha用のサンプル設定の作成helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-alpha" --set "namespaces={team-alpha-1,team-alpha-2}" > team-alpha.yaml$ helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-alpha" --set "namespaces={team-alpha-1,team-alpha-2}" > team-alpha.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow team bravoの設定例の作成helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-bravo" --set "namespaces={team-bravo-1,team-bravo-2}" > team-bravo.yaml$ helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-bravo" --set "namespaces={team-bravo-1,team-bravo-2}" > team-bravo.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
テナントのプロジェクトへの直接受信トラフィックを制限する 1 つの
認可ポリシー設定を適用します。
oc apply -f team-alpha.yaml team-bravo.yaml
$ oc apply -f team-alpha.yaml team-bravo.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow