バージョン 2. 0 ServiceMeshControlPlane の例 の例
1.10. データの可視化および可観測性
1.11.2. ロールベースアクセス制御 (RBAC) の設定
1.11.1.3. 最小および最大のプロトコルバージョンの設定 最小および最大のプロトコルバージョンの設定
ご使用の環境のサービスメッシュに暗号化されたトラフィックの特定の要件がある場合、許可される暗 号化機能を制御できます。これは、ServiceMeshControlPlane リソースに
spec.security.controlPlane.tls.minProtocolVersion または
spec.security.controlPlane.tls.maxProtocolVersion を設定して許可できます。コントロールプレー ンリソースで設定されるこれらの値は、TLS 経由でセキュアに通信する場合にメッシュコンポーネント によって使用される最小および最大の TLS バージョンを定義します。
デフォルトは TLS_AUTO であり、TLS のバージョンは指定しません。
表
表1.1 有効な値有効な値 値
値 説明説明
TLS_AUTO default
TLSv1_0 TLS バージョン 1.0
TLSv1_1 TLS バージョン 1.1
TLSv1_2 TLS バージョン 1.2
TLSv1_3 TLS バージョン 1.3
1.11.1.4. Mixer Telemetry またはポリシーコンポーネントの厳密な またはポリシーコンポーネントの厳密な mTLS の有効化 の有効化
セキュアな接続は、spec.security.controlPlane.mtls 設定に関係なく、プロキシーがコントロールプ レーンと通信する際に常に使用されます。Mixer Telemetry またはポリシーを使用する場合
は、ServiceMeshControlPlane リソースで spec.security.controlPlane.mtls を true に設定して、厳
密な mTLS を有効にします。
義できます。
RBAC を設定するには、アクセスを設定する namespace で AuthorizationPolicy リソースを作成しま す。メッシュ全体のアクセスを設定する場合は、istio-system を使用します。
たとえば、RBAC を使用して以下を実行するポリシーを作成できます。
プロジェクト内通信を設定します。
デフォルト namespace のすべてのワークロードへの完全アクセスを許可または拒否します。
ingress ゲートウェイアクセスを許可または拒否します。
アクセスにはトークンが必要です。
認証ポリシーには、セレクター、アクション、およびルールの一覧が含まれます。
selector フィールドは、ポリシーのターゲットを指定します。
action フィールドは、要求を許可または拒否するかどうかを指定します。
rules フィールドは、アクションをトリガーするタイミングを指定します。
from フィールドは、要求元についての制約を指定します。
to フィールドは、要求のターゲットおよびパラメーターの制約を指定します。
when フィールドは、ルールを適用する追加の条件を指定します。
手順 手順
1. AuthorizationPolicy リソースを作成します。以下の例は、ingress-policy AuthorizationPolicy を更新して、IP アドレスが Ingress ゲートウェイにアクセスすることを拒否するリソースを示 しています。
2. リソースを作成した後に以下のコマンドを実行して、namespace にリソースを作成します。
namespace は、AuthorizationPolicy リソースの metadata.namespace フィールドと一致する 必要があります。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy
metadata:
name: ingress-policy namespace: istio-system spec:
selector:
matchLabels:
app: istio-ingressgateway action: DENY
rules:
- from:
- source:
ipBlocks: ["1.2.3.4"]
$ oc create -n istio-system -f <filename>
次のステップ 次のステップ
その他の一般的な設定については、以下の例を参照してください。
1.11.2.1. プロジェクト内通信の設定 プロジェクト内通信の設定
AuthorizationPolicy を使用してコントロールプレーンを設定し、メッシュまたはメッシュ内のサービ
スとの通信トラフィックを許可したり、拒否したりすることができます。
1.11.2.1.1. namespace 外のサービスへのアクセス制限外のサービスへのアクセス制限
以下の AuthorizationPolicy リソースの例を使用して、bookinfo namespace にないソースからの要求 を拒否することができます。
1.11.2.1.2. allow-all およびデフォルトのおよびデフォルトの deny-all 認証ポリシーの作成認証ポリシーの作成
以下の例は、bookinfo namespace のすべてのワークロードへの完全なアクセスを許可する allow-all 認 証ポリシーを示しています。
以下の例は、bookinfo namespace のすべてのワークロードへのアクセスを拒否するポリシーを示して います。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy
metadata:
name: httpbin-deny namespace: bookinfo spec:
selector:
matchLabels:
app: httpbin version: v1 action: DENY rules:
- from:
- source:
notNamespaces: ["bookinfo"]
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy
metadata:
name: allow-all namespace: bookinfo spec:
action: ALLOW rules:
- {}
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy
metadata:
name: deny-all
1.11.2.2. ingress ゲートウェイへのアクセスの許可または拒否 ゲートウェイへのアクセスの許可または拒否
認証ポリシーを設定し、IP アドレスに基づいて許可または拒否リストを追加できます。
1.11.2.3. JSON Web トークンを使用したアクセスの制限 トークンを使用したアクセスの制限
JSON Web Token (JWT) を使用してメッシュにアクセスできる内容を制限できます。認証後に、ユー
ザーまたはサービスはそのトークンに関連付けられたルート、サービスにアクセスできます。
ワークロードでサポートされる認証方法を定義する RequestAuthentication リソースを作成します。
以下の例では、http://localhost:8080/auth/realms/master で実行される JWT を受け入れます。
次に、同じ namespace に AuthorizationPolicy リソースを作成し、作成した RequestAuthentication リソースと連携させます。以下の例では、要求を httpbin ワークロードに送信する際に、JWT は Authorization ヘッダーになければなりません。
namespace: bookinfo spec:
{}
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy
metadata:
name: ingress-policy namespace: istio-system spec:
selector:
matchLabels:
app: istio-ingressgateway action: ALLOW
rules:
- from:
- source:
ipBlocks: ["1.2.3.4", "5.6.7.0/24"]
apiVersion: "security.istio.io/v1beta1"
kind: "RequestAuthentication"
metadata:
name: "jwt-example"
namespace: bookinfo spec:
selector:
matchLabels:
app: httpbin jwtRules:
- issuer: "http://localhost:8080/auth/realms/master"
jwksUri: "http://keycloak.default.svc:8080/auth/realms/master/protocol/openid-connect/certs"
apiVersion: "security.istio.io/v1beta1"
kind: "AuthorizationPolicy"
metadata:
name: "frontend-ingress"
namespace: bookinfo spec: