OPA에 대해서 이해하기
OPA의 개념
- OPA(Open Policy Agent) : 클라우드 네이티브 환경에서 사용되는 정책 엔진으로, 애플리케이션, 인프라, API 등에 적용할 수 있는 통합 정책 관리 도구.
- 다양한 시스템에 정책을 분리해 일관되고 중앙 집중적인 방식으로 제어
- 쿠버네티스(Kubernetes), Envoy, Terraform, Kafka 등과 연동 가능
- 정책은 Rego 언어로 작성됨 (데이터 질의 기반 언어)
OPA 실습환경과 사용흐름
OPA는 클라이언트가 요청한 Docker API에 대해서 Docker Daemon이 OPA Plugin Container에 전달해 정책에 따라 허용/거부 한다.

이번 실습에서는 Bundle 서버없이 진행할 것이며 정책 파일을 Plugin Container 내부에 Mount 하여 진행한다.
또한 Docker Hub에 업로드 되어있는 OPA Image는 v0.9에 머물러 있어 관련 Github Repository의 Packages를 활용해 진행한다.
OPA를 활용하여 Docker API 인가 실습
OPA 정책 파일을 생성한다.
더 자세한 정책 제어는 공식 홈페이지를 참고해 진행하면 된다.
https://www.openpolicyagent.org/docs/latest/docker-authorization/
Docker
Policy-based control for cloud native environments
www.openpolicyagent.org
mkdir /etc/docker/policies
cat <<EOF >> /etc/docker/policies/authz.rego
package docker.authz
allow := false
EOF
설정한 정책 파일을 OPA Plugin Container에 전달하여 Bundle 서버 없이 동작할 수 있게한다.
다만, Bundle 서버가 없으므로 매번 Plugin을 재등록해야 한다는 단점이 있다.
(Bundle 서버는 동적으로 정책 파일을 추적한다.)
docker plugin install --alias opa-docker-authz \
--grant-all-permissions \
ghcr.io/open-policy-agent/opa-docker-authz:v0.10-linux-arm64 \
opa-args="-policy-file /opa/policies/authz.rego"
Docker Daemon이 해당 Plugin을 사용할 수 있도록 등록해 준다.
OPA Plugin은 Hot Reload를 지원하지 않으므로 수동으로 설정 파일을 재로드한다.
Daemon에 HUP 시그널(SIGHUP) 신호를 보내면, 구성 파일을 다시 로드하거나 안전하게 프로세스를 재시작할 수 있다.
cat <<EOF >> /etc/docker/daemon.json
{
"authorization-plugins": ["opa-docker-authz"]
}
EOF
kill -HUP $(pidof dockerd)
'Tech > [Container] Docker' 카테고리의 다른 글
Docker Plugin에 대하여 (0) | 2025.05.09 |
---|---|
비전공자도 이해할 수 있는 Docker (2) (0) | 2025.04.03 |
비전공자도 이해할 수 있는 Docker (1) (0) | 2025.04.03 |
Flask API Server Dockerized (0) | 2022.11.17 |
Docker-Compose를 활용한 NestJS Dockerized (Mac M1) (0) | 2022.05.22 |