1.13.2. ロールベースアクセス制御 (RBAC) の設定
Role-based Access Control (RBAC: ロールベースアクセス制御) オブジェクトは、ユーザーまたはサービスがプロジェクト内で所定のアクションを実行することが許可されるかどうかを決定します。メッシュでワークロードのメッシュ全体、namespace 全体、およびワークロード全体のアクセス制御を定義できます。
RBAC を設定するには、アクセスを設定する namespace で AuthorizationPolicy
リソースを作成します。メッシュ全体のアクセスを設定する場合は、Service Mesh コントロールプレーンをインストールしたプロジェクト (例: istio-system
) を使用します。
たとえば、RBAC を使用して以下を実行するポリシーを作成できます。
- プロジェクト内通信を設定します。
- デフォルト namespace のすべてのワークロードへの完全アクセスを許可または拒否します。
- ingress ゲートウェイアクセスを許可または拒否します。
- アクセスにはトークンが必要です。
認証ポリシーには、セレクター、アクション、およびルールの一覧が含まれます。
-
selector
フィールドは、ポリシーのターゲットを指定します。 -
action
フィールドは、要求を許可または拒否するかどうかを指定します。 rules
フィールドは、アクションをトリガーするタイミングを指定します。-
from
フィールドは、要求元についての制約を指定します。 -
to
フィールドは、要求のターゲットおよびパラメーターの制約を指定します。 -
when
フィールドは、ルールを適用する追加の条件を指定します。
-
手順
AuthorizationPolicy
リソースを作成します。以下の例は、ingress-policyAuthorizationPolicy
を更新して、IP アドレスが Ingress ゲートウェイにアクセスすることを拒否するリソースを示しています。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"]
リソースを作成した後に以下のコマンドを実行して、namespace にリソースを作成します。namespace は、
AuthorizationPolicy
リソースのmetadata.namespace
フィールドと一致する必要があります。$ oc create -n istio-system -f <filename>
次のステップ
その他の一般的な設定については、以下の例を参照してください。
1.13.2.1. プロジェクト内通信の設定
AuthorizationPolicy
を使用して Service Mesh コントロールプレーンを設定し、メッシュまたはメッシュ内のサービスとの通信トラフィックを許可したり、拒否したりすることができます。
1.13.2.1.1. namespace 外のサービスへのアクセス制限
以下の AuthorizationPolicy
リソースの例を使用して、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"]
1.13.2.1.2. allow-all およびデフォルトの deny-all 認証ポリシーの作成
以下の例は、bookinfo
namespace のすべてのワークロードへの完全なアクセスを許可する allow-all 認証ポリシーを示しています。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-all namespace: bookinfo spec: action: ALLOW rules: - {}
以下の例は、bookinfo
namespace のすべてのワークロードへのアクセスを拒否するポリシーを示しています。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: deny-all namespace: bookinfo spec: {}