1.13.2. 역할 기반 액세스 제어(RBAC) 구성
RBAC(역할 기반 액세스 제어) 오브젝트에 따라 사용자 또는 서비스가 프로젝트 내에서 지정된 작업을 수행할 수 있는지가 결정됩니다. 메시의 워크로드에 대해 메시, 네임스페이스, 워크로드 전체 액세스 제어를 정의할 수 있습니다.
RBAC를 구성하려면 액세스를 구성하는 네임스페이스에 AuthorizationPolicy
리소스를 생성합니다. 메시 전체 액세스를 구성하는 경우 Service Mesh Control Plane을 설치한 프로젝트를 사용합니다(예: istio-system
).
예를 들어 RBAC를 사용하면 다음과 같은 정책을 생성할 수 있습니다.
- 프로젝트 내 통신을 구성합니다.
- 기본 네임스페이스의 모든 워크로드에 대한 전체 액세스를 허용하거나 거부합니다.
- 수신 게이트웨이 액세스를 허용 또는 거부합니다.
- 액세스 하려면 토큰이 필요합니다.
권한 부여 정책에는 선택기, 작업 및 규칙 목록이 포함됩니다.
-
selector
필드는 정책의 대상을 지정합니다. -
action
필드는 요청을 허용하거나 거부할지 여부를 지정합니다. rules
필드는 작업을 트리거할 시기를 지정합니다.-
from
필드는 요청 원본에 대한 제약 조건을 지정합니다. -
to
필드는 요청 대상 및 매개변수에 대한 제약 조건을 지정합니다. -
when
필드는 규칙을 적용하기 위한 추가 조건을 지정합니다.
-
프로세스
AuthorizationPolicy
리소스를 생성합니다. 다음 예제는 IP 주소가 수신 게이트웨이에 액세스하는 것을 거부하도록 ingress-policyAuthorizationPolicy
를 업데이트하는 리소스를 보여줍니다.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"]
리소스를 작성한 후 다음 명령어를 실행하여 네임스페이스에 리소스를 만듭니다. 네임스페이스는
AuthorizationPolicy
리소스의metadata.namespace
필드와 일치해야 합니다.$ oc create -n istio-system -f <filename>
다음 단계
다른 일반적인 구성에 대해서는 다음 예제를 고려하십시오.
1.13.2.1. 프로젝트 내 통신 구성
AuthorizationPolicy
를 사용하여 메시의 메시 또는 서비스와 통신하는 트래픽을 허용하거나 거부하도록 Service Mesh Control Plane을 구성할 수 있습니다.
1.13.2.1.1. 네임스페이스 외부 서비스에 대한 액세스 제한
다음 AuthorizationPolicy
리소스 예제를 사용하여 bookinfo
네임스페이스에 없는 모든 소스의 요청을 거부할 수 있습니다.
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. 권한 부여 모두 허용 및 권한 부여 모두 거부(기본) 정책 만들기
다음 예제에서는 bookinfo
네임스페이스의 모든 워크로드에 액세스할 수 있는 권한 부여 모두 허용 정책을 보여줍니다.
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-all namespace: bookinfo spec: action: ALLOW rules: - {}
다음 예제에서는 bookinfo
네임스페이스의 모든 워크로드에 대한 액세스를 거부하는 정책을 보여줍니다.
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: deny-all namespace: bookinfo spec: {}