원문 캡처 · github.com
원문 캡처 · github.com

Armite는 Azure 클라이언트와 도구가 로컬에서 실제와 비슷한 인증·역할 기반 접근 제어(RBAC)를 거치도록 하는 Azure 에뮬레이터다. Azure CLI, SDK, Terraform으로 권한에 따른 허용과 거부를 시험할 수 있으며, 제작자는 프로덕션에서 겪을 수 있는 권한 오류를 노트북이나 CI에서 재현할 수 있다고 설명한다.

Armite는 토큰 발급·검증과 관리 영역 및 데이터 영역의 역할 평가를 제공한다. 예를 들어 구독의 Owner 역할만 가진 주체는 관리 작업을 할 수 있지만, RBAC 모드의 Key Vault에서는 데이터 역할을 별도로 받지 않으면 비밀을 읽거나 쓸 수 없다. Key Vault Secrets Officer를 할당하면 해당 작업이 허용되는 방식이다.

제작자에 따르면 Armite에는 Azure 기본 역할 934개와 역할 할당, 관리 리소스 관리 기능, Key Vault 비밀의 버전·삭제 복구 기능이 포함된다. Storage는 Azurite를 뒤에 두고 블롭 요청마다 RBAC를 적용한다. API로 만든 데이터는 암호화된 저널에 저장돼 재시작 뒤에도 유지되며, 데이터베이스는 별도로 필요하지 않다. 제작자는 az 2.89, Azure SDK, Terraform 1.16의 수정하지 않은 azurerm 프로바이더 등으로 동작을 확인했다고 밝힌다.

Docker 이미지로 실행하거나 Go 바이너리를 설치할 수 있다.

text
docker run -d --name armite -p 127.0.0.1:8443:8443 -p 127.0.0.1:8081:8081 \
 -v armite:/data ghcr.io/ioflux-org/armite # the image, Azurite inside
go install github.com/ioflux-org/armite/cmd/armite@latest && armite # or the binary

실행 시 첫 부팅에서 비공개 인증 기관(CA)을 만들고, 관리 API와 Entra 인증, Key Vault 및 블롭 데이터 영역을 로컬 주소로 제공한다. 클라이언트가 이 주소를 찾도록 호스트 이름을 127.0.0.1에 연결해야 하며, 각 클라이언트에 ~/.armite/ca.pem을 설정해야 한다. Linux에서 systemd-resolved를 쓰지 않는 환경과 WSL2, macOS에서는 DNS 설정이 추가로 필요할 수 있다. Storage 계정을 쓰려면 azurite-blob이 경로에 있어야 하며, Docker 이미지에는 포함돼 있다. 설치 방법은 문서와 릴리스 페이지, DNS 설정은 안내에서 확인할 수 있다.

Armite는 하나의 테넌트와 구독, 미리 정해진 두 주체를 사용한다. Microsoft Graph는 지원하지 않아 az ad … 명령은 작동하지 않는다. 그룹을 통한 권한 확장, ABAC 조건, 거부 할당도 제공하지 않는다. Key Vault 키와 인증서는 아직 지원하지 않으며, Storage는 블롭만 지원한다. 스토리지 계정을 만들 때 Azurite가 재시작돼 약 2초 동안 중단될 수 있다. Azure와 다른 점은 문서, 클라이언트 설정은 안내에서 볼 수 있다. 저장 방식은 문서, Storage 사용 예시는 문서에 정리돼 있다.

Armite는 Apache License 2.0으로 제공된다. Microsoft와 제휴하거나 Microsoft의 승인을 받은 제품은 아니다.