This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第10章 セキュリティー
10.1. Knative サービスの JSON Web Token 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless には現在、ユーザー定義の承認機能がありません。ユーザー定義の承認をデプロイメントに追加するには、OpenShift Serverless を Red Hat OpenShift Service Mesh と統合してから、Knative サービスの JSON Web Token (JWT) 認証とサイドカーインジェクションを設定する必要があります。
10.1.1. Service Mesh 2.x および OpenShift Serverless での JSON Web トークン認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
Service Mesh 2.x と OpenShift Serverless を使用して、Knative サービスで JSON Web Token (JWT) 認証を使用できます。これを行うには、ServiceMeshMemberRoll オブジェクトのメンバーであるアプリケーション namespace に認証要求とポリシーを作成する必要があります。サービスのサイドカーインジェクションも有効にする必要があります。
knative-serving および knative-serving-ingress などのシステム namespace の Pod へのサイドカー挿入の追加は、Kourier が有効化されている場合はサポートされません。
これらの namespace の Pod にサイドカーの挿入が必要な場合は、サービスメッシュと OpenShift Serverless のネイティブに統合に関する OpenShift Serverless のドキュメントを参照してください。
前提条件
- OpenShift Serverless Operator、Knative Serving、および Red Hat OpenShift Service Mesh をクラスターにインストールしました。
-
OpenShift CLI (
oc) をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
sidecar.istio.io/inject="true"アノテーションをサービスに追加します。サービスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Serviceリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceMeshMemberRollオブジェクトのメンバーである各サーバーレスアプリケーション namespace にRequestAuthenticationリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RequestAuthenticationリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の
AuthorizationPolicyリソースを作成して、ServiceMeshMemberRollオブジェクトのメンバーである各サーバーレスアプリケーション namespace のシステム Pod からのRequestAuthenticatonリソースへのアクセスを許可します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AuthorizationPolicyリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceMeshMemberRollオブジェクトのメンバーであるサーバーレスアプリケーション namespace ごとに、以下のAuthorizationPolicyリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AuthorizationPolicyリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
curl要求を使用して Knative サービス URL を取得しようとすると、これは拒否されます。コマンドの例
curl http://hello-example-1-default.apps.mycluster.example.com/
$ curl http://hello-example-1-default.apps.mycluster.example.com/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
RBAC: access denied
RBAC: access deniedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有効な JWT で要求を確認します。
有効な JWT トークンを取得します。
TOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/demo.jwt -s) && echo "$TOKEN" | cut -d '.' -f2 - | base64 --decode -
$ TOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/demo.jwt -s) && echo "$TOKEN" | cut -d '.' -f2 - | base64 --decode -Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl要求ヘッダーで有効なトークンを使用してサービスにアクセスします。curl -H "Authorization: Bearer $TOKEN" http://hello-example-1-default.apps.example.com
$ curl -H "Authorization: Bearer $TOKEN" http://hello-example-1-default.apps.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow これで要求が許可されます。
出力例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.2. Service Mesh 1.x および OpenShift Serverless での JSON Web トークン認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
Service Mesh 1.x と OpenShift Serverless を使用して、Knative サービスで JSON Web Token (JWT) 認証を使用できます。これを行うには、ServiceMeshMemberRoll オブジェクトのメンバーであるアプリケーション namespace にポリシーを作成する必要があります。サービスのサイドカーインジェクションも有効にする必要があります。
knative-serving および knative-serving-ingress などのシステム namespace の Pod へのサイドカー挿入の追加は、Kourier が有効化されている場合はサポートされません。
これらの namespace の Pod にサイドカーの挿入が必要な場合は、サービスメッシュと OpenShift Serverless のネイティブに統合に関する OpenShift Serverless のドキュメントを参照してください。
前提条件
- OpenShift Serverless Operator、Knative Serving、および Red Hat OpenShift Service Mesh をクラスターにインストールしました。
-
OpenShift CLI (
oc) をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
sidecar.istio.io/inject="true"アノテーションをサービスに追加します。サービスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Serviceリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有効な JSON Web Tokens (JWT) の要求のみを許可する
ServiceMeshMemberRollオブジェクトのメンバーであるサーバーレスアプリケーション namespace でポリシーを作成します。重要パスの
/metricsおよび/healthzは、knative-servingnamespace のシステム Pod からアクセスされるため、excludedPathsに組み込まれる必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Policyリソースを適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
curl要求を使用して Knative サービス URL を取得しようとすると、これは拒否されます。curl http://hello-example-default.apps.mycluster.example.com/
$ curl http://hello-example-default.apps.mycluster.example.com/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Origin authentication failed.
Origin authentication failed.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有効な JWT で要求を確認します。
有効な JWT トークンを取得します。
TOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.6/security/tools/jwt/samples/demo.jwt -s) && echo "$TOKEN" | cut -d '.' -f2 - | base64 --decode -
$ TOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.6/security/tools/jwt/samples/demo.jwt -s) && echo "$TOKEN" | cut -d '.' -f2 - | base64 --decode -Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl要求ヘッダーで有効なトークンを使用してサービスにアクセスします。curl http://hello-example-default.apps.mycluster.example.com/ -H "Authorization: Bearer $TOKEN"
$ curl http://hello-example-default.apps.mycluster.example.com/ -H "Authorization: Bearer $TOKEN"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで要求が許可されます。
出力例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow