--- title: RBAC (deprecated) description: Configuration for Role Based Access Control. location: https://istio.io/docs/reference/config/security/istio.rbac.v1alpha1.html layout: protoc-gen-docs generator: protoc-gen-docs weight: 40 aliases: [/docs/reference/config/authorization/istio.rbac.v1alpha1] number_of_entries: 9 ---

Note: The v1alpha1 RBAC policy is deprecated by the v1beta1 Authorization policy. This page is kept for migration purpose and will be removed in Istio 1.6.

Istio RBAC (Role Based Access Control) defines ServiceRole and ServiceRoleBinding objects.

A ServiceRole specification includes a list of rules (permissions). Each rule has the following standard fields:

In addition to the standard fields, operators can also use custom keys in the constraints field, the supported keys are listed in the “constraints and properties” page.

Below is an example of ServiceRole object “product-viewer”, which has “read” (“GET” and “HEAD”) access to “products.svc.cluster.local” service at versions “v1” and “v2”. “path” is not specified, so it applies to any path in the service.

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: products-viewer
  namespace: default
spec:
  rules:
  - services: ["products.svc.cluster.local"]
    methods: ["GET", "HEAD"]
    constraints:
    - key: "destination.labels[version]"
      values: ["v1", "v2"]

A ServiceRoleBinding specification includes two parts:

In addition to a simple user field, operators can also use custom keys in the properties field, the supported keys are listed in the “constraints and properties” page.

Below is an example of ServiceRoleBinding object “test-binding-products”, which binds two subjects to ServiceRole “product-viewer”:

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: test-binding-products
  namespace: default
spec:
  subjects:
  - user: alice@yahoo.com
  - properties:
      source.namespace: "abc"
  roleRef:
    kind: ServiceRole
    name: "products-viewer"

AccessRule

AccessRule defines a permission to access a list of services.

Field Type Description Required
services string[]

A list of service names. Exact match, prefix match, and suffix match are supported for service names. For example, the service name “bookstore.mtv.cluster.local” matches “bookstore.mtv.cluster.local” (exact match), or “bookstore*” (prefix match), or “*.mtv.cluster.local” (suffix match). If set to [”*”], it refers to all services in the namespace.

Yes
paths string[]

Optional. A list of HTTP paths or gRPC methods. gRPC methods must be presented as fully-qualified name in the form of “/packageName.serviceName/methodName” and are case sensitive. Exact match, prefix match, and suffix match are supported. For example, the path “/books/review” matches “/books/review” (exact match), or “/books/*” (prefix match), or “*/review” (suffix match). If not specified, it matches to any path. This field should not be set for TCP services. The policy will be ignored.

No
methods string[]

Optional. A list of HTTP methods (e.g., “GET”, “POST”). If not specified or specified as “*”, it matches to any methods. This field should not be set for TCP services. The policy will be ignored. For gRPC services, only POST is allowed; other methods will result in denying services.

No
constraints Constraint[]

Optional. Extra constraints in the ServiceRole specification.

No

AccessRule.Constraint

Definition of a custom constraint. The supported keys are listed in the “constraint and properties” page.

Field Type Description Required
key string

Key of the constraint.

No
values string[]

List of valid values for the constraint. Exact match, prefix match, and suffix match are supported. For example, the value “v1alpha2” matches “v1alpha2” (exact match), or “v1*” (prefix match), or “*alpha2” (suffix match).

No

RbacConfig

RbacConfig implements the ClusterRbacConfig Custom Resource Definition for controlling Istio RBAC behavior. The ClusterRbacConfig Custom Resource is a singleton where only one ClusterRbacConfig should be created globally in the mesh and the namespace should be the same to other Istio components, which usually is istio-system.

Below is an example of an ClusterRbacConfig resource called istio-rbac-config which enables Istio RBAC for all services in the default namespace.

apiVersion: "rbac.istio.io/v1alpha1"
kind: ClusterRbacConfig
metadata:
  name: default
  namespace: istio-system
spec:
  mode: ON_WITH_INCLUSION
  inclusion:
    namespaces: [ "default" ]
Field Type Description Required
mode Mode

Istio RBAC mode.

No
inclusion Target

A list of services or namespaces that should be enforced by Istio RBAC policies. Note: This field have effect only when mode is ONWITHINCLUSION and will be ignored for any other modes.

No
exclusion Target

A list of services or namespaces that should not be enforced by Istio RBAC policies. Note: This field have effect only when mode is ONWITHEXCLUSION and will be ignored for any other modes.

No

RbacConfig.Mode

Name Description
OFF

Disable Istio RBAC completely, Istio RBAC policies will not be enforced.

ON

Enable Istio RBAC for all services and namespaces. Note Istio RBAC is deny-by-default which means all requests will be denied if it’s not allowed by RBAC rules.

ON_WITH_INCLUSION

Enable Istio RBAC only for services and namespaces specified in the inclusion field. Any other services and namespaces not in the inclusion field will not be enforced by Istio RBAC policies.

ON_WITH_EXCLUSION

Enable Istio RBAC for all services and namespaces except those specified in the exclusion field. Any other services and namespaces not in the exclusion field will be enforced by Istio RBAC policies.

RbacConfig.Target

Target defines a list of services or namespaces.

Field Type Description Required
services string[]

A list of services.

No
namespaces string[]

A list of namespaces.

No

RoleRef

RoleRef refers to a role object.

Field Type Description Required
kind string

The type of the role being referenced. Currently, “ServiceRole” is the only supported value for “kind”.

Yes
name string

The name of the ServiceRole object being referenced. The ServiceRole object must be in the same namespace as the ServiceRoleBinding object.

Yes

ServiceRole

ServiceRole specification contains a list of access rules (permissions).

Field Type Description Required
rules AccessRule[]

The set of access rules (permissions) that the role has.

Yes

ServiceRoleBinding

ServiceRoleBinding assigns a ServiceRole to a list of subjects.

Field Type Description Required
subjects Subject[]

List of subjects that are assigned the ServiceRole object.

Yes
roleRef RoleRef

Reference to the ServiceRole object.

Yes

Subject

Subject defines an identity. The identity is either a user or identified by a set of properties. The supported keys in properties are listed in “constraint and properties” page.

Field Type Description Required
user string

Optional. The user name/ID that the subject represents.

No
properties map<string, string>

Optional. The set of properties that identify the subject.

No