본문으로 건너뛰기

Envoy (서비스 메시 권한 부여)

**envoy-authz**는 Casbin을 RBAC/ABAC에 사용하는 Envoy 외부 권한 부여 서비스입니다. Envoy의 외부 인증 gRPC API를 구현하며, Istio 또는 기타 Envoy 기반 메시와 호환됩니다.

사전 요구 사항​

  • Envoy 1.17 이상
  • Istio 또는 기타 Envoy 기반 서비스 메시
  • gRPC 의존성

의존성은 go.mod를 통해 관리됩니다.

작동 방식​

  • 클라이언트가 HTTP 요청을 시작합니다
  • Envoy가 요청을 가로채어 gRPC 권한 부여 서버로 전달합니다
  • 서버가 Casbin 정책에 따라 요청을 평가합니다
  • 권한이 있는 요청은 진행되고, 권한이 없는 요청은 차단됩니다

gRPC 서버는 Envoy의 external_auth.proto 프로토콜 버퍼 정의를 구현합니다:

// A generic interface for performing authorization checks on incoming
// requests to a networked service.
service Authorization {
// Performs an authorization check based on the attributes associated with the
// incoming request and returns a status of `OK` or not `OK`.
rpc Check(v2.CheckRequest) returns (v2.CheckResponse);
}

권한 부여 서버는 위에서 정의된 Check() 메서드를 구현해야 합니다.

사용법​

  • Casbin 문서를 참조하여 구성 파일에 Casbin 정책을 설정하세요.

온라인 Casbin 에디터를 사용하여 정책을 테스트할 수 있습니다.

  • 권한 부여 서버를 실행하세요:
go build .
./authz
  • Envoy 구성을 적용하세요:
envoy -c authz.yaml -l info

Envoy가 시작되면 수신되는 요청을 권한 부여 미들웨어를 통해 라우팅합니다.

Istio 연동​

이 미들웨어를 활성화하려면 사용자 신원 정보를 JWT 토큰 또는 요청 헤더의 커스텀 헤더를 통해 전달하도록 시스템을 구성하세요. 요청 헤더 수정 지침은 공식 Istio 문서를 참조하세요.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.